vue-router@4.05 параметры объекта

Проблема

router.push({name:"Order", params: {obj: {}}) не может подтолкнуть obj: {}, вместо этого маршрут получает obj: '[object Object]'

Ситуация

У меня такой маршрут

      {
    path: '/Order',
    name: 'Order',
    component: () => import("../views/Order.vue"),
    props: route => {
      return route.params.obj //  '[object Object]'
    },
 }

это приводит к тому, что реквизит не определяется в Order.vue

ожидаемый результат

      {
    ...
    props: route => {
      return route.params.obj //  '{}'
    },
}

На основе этого ответа объекты работают в более старых версиях

Что я тестировал

Я использовал шутку, чтобы проверить аргументы, переданные в router.push и они выглядят так, как должны: {name:"Order", params: {obj: {}}

Любые идеи?

1 ответ

Передача объектов в paramsникогда не поддерживал в Вью-маршрутизатор

Это вроде работало в Router v3 с $router.push- целевой компонент получил объект. НО, как только пользователь начал использовать навигацию в браузере (кнопка «Назад») ИЛИ скопировать / вставить URL-адреса, это решение было сломано (вы можете попробовать его здесь - просто нажмите кнопку, а затем используйте элементы управления фреймом назад и вперед)

Как правило, если вы хотите передать что-либо целевому маршруту / компоненту, такие данные должны быть определены как параметры в определении маршрута, чтобы их можно было включить непосредственно в URL-адрес.

Это было верно для Vue-router v3 и по-прежнему для Vue-router v4.

Другие вопросы по тегам