Потеря router.params при обновлении страницы - PullRequest
1 голос
/ 23 апреля 2019

У меня проблема с vue-router.
Я получил список сообщений на домашней странице.Когда я нажимаю на одну из них, она перенаправляет на страницу сообщения, например:

<router-link :to="{ name: 'article', params: {id: article.id, slug: article.slug } }"></router-link>

Все работает отлично, я могу получить данные нужной статьи, используя this.$route.params.idв получателе.

Моя проблема: Когда я перезагружаю страницу статьи, this.$route.params.id не определено, что приводит к сбою всего приложения.

Как я могу сохранить router.params несмотря на перезагрузку страницы?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Я не уверен, каково ваше определение маршрута, проблема может заключаться в том, что только один из параметров представлен в URL-адресе маршрута (например, /article/:slug).

Когда вы вызываете маршрут (нажимая router-link или вызывая router.push), вы передаете оба параметра напрямую, и они сохраняются в памяти. Вот почему оба доступны. Но когда вы перезагружаете страницу - все, что может сделать Vue, это проанализировать ваш URL. Означает только один проанализированный параметр, потому что присутствует только один параметр.

В качестве решения вы можете:

  • использовать оба параметра в URL-адресе маршрута (например, /article/:id/:slug);
  • или используйте один параметр и вызовите свой API для получения оставшейся информации (например, получите id слагом, если ваш маршрут /article/:slug).
0 голосов
/ 23 апреля 2019

Какой бэкэнд вы используете? Вам необходимо включить history mode на своем маршрутизаторе , а также внести некоторые дополнительные изменения в конфигурацию на своем внутреннем веб-сервере. Пожалуйста, обратитесь к этой ссылке для дополнительных изменений конфигурации на стороне сервера , которые вам нужно будет сделать для правильной работы.

Также, обратите внимание на это предупреждение 404 при использовании history mode ..

Редактировать: вы можете попробовать что-то вроде этого , так как идентификатор остается постоянным в URL: Найдите решение из MIKE ПОДВЕСКА

Я не знаю, сталкивался ли кто-нибудь еще с той же проблемой, но у меня была проблема с получением параметров маршрута при обновлении. Параметр маршрута, который я пытался получить, представлял собой идентификационный номер, и я использую этот идентификатор для извлечения данных и заполнения страницы. Я обнаружил (во многих журналах консоли), когда обновлялся, номер превращался в строку, и поэтому страница не работала. Я разобрался с этим, но перед использованием использовал приведенный номер:

Количество ($ route.params.id)

...