关于 Vuex 模块的问题

来源:4-8 Vuex之模块

qq_缺南摸了个北_0

2019-06-22

我自己测试了一下,
当在 Vuex 中使用模块,设置 namespace:boolean 会出现下列几种情况。

namespace:false

  1. state 声明不冲突.(调用则是 this.$store.state.module.xxx)在调用级别就已经区分模块了)
  2. getters 无法声明成同名的.(否则会报命名重复冲突)
  3. mutations 和 actions 将会编译成全局的.将同名的mutations和actions丢在一个数组里.调用其中任何一个都会触发全部同名的mutations和actions调用.

namespace:true

  1. state 不冲突.
  2. getters 也不冲突.
  3. mutations 也不冲突.
  4. actions 仍然不冲突.

既然分了模块了,两个模块直接就是用明显界限了。

为什么还要提供一个 namespace 来设置这种应该默认存在的特性?(不应该默认提供namespace:true).

还有模块之间的getter,mutations 直接的通信,参数,值之类的情况好多,还有什么 subscribe,plugins…有一点不太好记。。太零碎了。。感觉不是很易用。。

最后是,跑在浏览器里的数据,浏览器一关就没了,使用这么复杂且不易用的模块系统,感觉好没性价比。

用本地存储,可以持久性保存,但是没有Vuex提供的组重要的响应式特点。也是比较蛋疼。

写回答

1回答

Jokcy

2019-06-23

-。-你这有点。。。这么说,默认不为true就是因为大部分应用不需要namespace

持久化是另外一个话题,vuex应该也有类似插件提供全量持久化的

0
0

Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲

深入讲解Vue核心技术,展示Vue应用开发中的各种问题和解决方案

3168 学习 · 853 问题

查看课程