【问题标题】:How to commit a mutation to store whenever route changes每当路由更改时如何提交突变以存储
【发布时间】:2018-05-25 12:01:55
【问题描述】:

是否有任何方法可以在路径更改时提交一个突变来存储而不使用 Vuex 插件来监听route/ 突变?

使用vuex、nuxt、vue-router + vue-router-sync。

编辑:我正在尝试在商店的不同部分进行提交,而不仅仅是route 部分。

看到很多对立面的问题,但不是这个,标记重复时请记住;)。

【问题讨论】:

  • 您是在问如何在不使用vue-router-sync 的情况下自己实现vue-router-sync 所做的事情吗?你想执行什么样的突变?
  • @DecadeMoon 感谢您的参与!我已经更新了?更具体

标签: javascript vue.js vue-router vuex


【解决方案1】:

您可以在路由器上注册一个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 文件。我只需要将商店导入该文件并在其中注册afterEach 吗?我希望导入商店不会被认为是一种不好的做法
  • 我最终使用了一个通用的 vuex 插件来监听路由变化突变,然后提交另一个突变......不过我更喜欢这种方法,会试一试!谢谢
猜你喜欢
  • 2021-02-19
  • 2014-10-16
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2020-09-03
  • 1970-01-01
  • 2020-04-25
相关资源
最近更新 更多