Я столкнулся с проблемой, которую воспроизвел с помощью следующего упрощенного кода:
App. vue
<router-link to="/">Home</router-link> |
<router-link :to="{name: 'View1', params: {myprop: 'hello 1'}}"> |
View 1 - Param 1
</router-link>
<router-link :to="{name: 'View1', params: {myprop: 'hello 2'}}"> |
View 1 - Param 2
</router-link>
<router-view :key='$route.path' />
View1. vue
<template>
<div>
My prop = {{myprop}}
</div>
</template>
Если я начну с ссылки «Домой» и нажму «View 1 - Param 1», я попаду в View1 и увижу «My prop = hello 1». Это как и ожидалось.
Если я затем go вернусь на домашнюю страницу и нажму «View 1 - Param 2», я перейду в View1 и увижу «My prop = hello 2». Это также как и ожидалось.
Вот где начинаются проблемы. Если я нажимаю «View 1 - Param 1», когда я уже нахожусь в «View 1 - Param 2», то я попадаю в View1, но сообщение не обновляется. Итак, я снова вижу «My prop = hello 2» вместо «My prop = hello 1».
Насколько я понимаю, Vue не выполняет повторную визуализацию View1 как оптимизацию, поскольку представление «from» и «To» - то же самое, но, очевидно, это не то поведение, которое мне хотелось бы.
Я провел небольшое исследование по этому поводу и наткнулся на видео, в котором предлагалось использовать «key = '$ route.path'» в тег представления адресовал бы это. Однако для меня это не решает проблему.
Каков правильный способ решения этой проблемы, пожалуйста?