Rob*_*Rob 6 vue.js vue-router vuex vuejs2 vuex-modules
我对unregisterModule实际操作有些困惑。
如果我们有这样的模块:
{
state: {
page: 1
}
}
Run Code Online (Sandbox Code Playgroud)
然后动态取消/注册:
beforeCreate() {
this.$store.registerModule('items', store);
},
beforeDestroy() {
this.$store.unregisterModule('items');
},
Run Code Online (Sandbox Code Playgroud)
如果我们更改page导航方式(触发unregister),则向后导航。
似乎状态仍然存在?我认为unregister完全杀死了该模块以及所有数据,状态等?
我可以使状态成为这样的函数:
{
state() {
return {
page: 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,那它仍然不会改变问题,那unregisterModule实际上是什么呢?
这是否也意味着我要么必须将所有状态对象都更改为函数,要么在注销时使用某种重置方法。这似乎毫无意义,我在这里想念什么?
unregisterModule删除模块,您无法访问它。
状态不会持续存在,但您必须将状态用作函数
从文档:
如果我们使用一个普通对象来声明模块的状态,那么该状态对象将通过引用共享并在它发生变异时导致跨存储/模块状态污染。
这实际上与 Vue 组件内部的数据完全相同。所以解决方案也是一样的——使用一个函数来声明模块状态。
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |