1

我想在浏览器的主页上存储我的 url,/main然后再使用nuxt-link. 这是我的nuxt-link

<NuxtLink
  :to="`/search?param={number}`"
  @click.native="assignAddress"
>
  SEARCH
</NuxtLink>

这是通过单击触发的方法nuxt-link

assignAddress() {
  localStorage.setItem("address", `${this.$route.path}`);
},

问题是它保存/search在浏览器中。我认为发生的是assignAddress在 nuxt 更改页面后触发了该方法!

如何先将 url 存储在浏览器中,然后更改页面,以便在我的浏览器中存储/main而不是/search

4

2 回答 2

1

@seyet 您如何尝试在beforeRouteLeave导航守卫中设置它。

beforeRouteLeave(to, from, next) {
  // called when the route that renders this component is about to
  // be navigated away from.
  // has access to `this` component instance.
}

链接到此处找到的文档

完成后请务必致电next()

于 2021-06-25T03:16:54.843 回答
1

如上所述,您确实可以使用一些路由器防护。
我确实更喜欢使用beforeRouteEnterover,beforeRouteLeave因为如果我的目标组件正确安装,我觉得解析流程可能不太容易出错,因此在组件转换期间没有错误。

在这里,这看起来像代码方面的

/pages/search-page.vue

<template>
  <div>This is the search page</div>
</template>

<script>
export default {
  name: 'SearchPage',
  beforeRouteEnter(to, from, next) {
    console.log('came from', from)
    localStorage.setItem('address', from.path)
    next()
  },
}
</script>
于 2021-06-25T07:54:43.530 回答