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.