如何在路由更改时提交一个更改到存储库?

4
有没有办法在路由变化时提交一个mutation到store,而不用使用Vuex插件来监听route/ mutations?
使用vuexnuxtvue-router + vue-router-sync
编辑:我正在尝试在存储的不同部分进行提交,而不仅仅是route部分。
看到很多问题询问相反的方向,但没有这个问题,请注意避免标记为重复;)。

你是在询问如何在不使用vue-router-sync的情况下实现其功能吗?你想进行什么类型的变异操作? - Decade Moon
@DecadeMoon 感谢你的参与!我已经更新了问题,使其更加具体。 - adamz4008
1个回答

5
您可以在路由器上注册一个afterEach监听器,并从那里提交您的变异。
router.afterEach((to, from) => {
  store.commit('MY_MUTATION', ...)
})

我不太熟悉nuxt,但这个方法可能会有用:

// plugins/sync.js

export default ({ app: { router, store } }) => {
  router.afterEach((to, next) => {
    store.commit('MY_MUTATION', ...)
  })
}

// nuxt.config.js

plugins: [
  '~plugins/sync'
]

抱歉,我忘记提到我也在使用Nuxt。它带有一个router.js文件。我是否只需要在那个文件中导入store并注册afterEach?我希望将store导入视为一种不良实践。 - adamz4008
最终我使用通用vuex插件来监听路由变化的mutation,然后再提交其他的mutation……虽然我更喜欢这种方法,但我会试一试!谢谢 - adamz4008

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接