1
drydiy 2020-05-14 16:22:04 +08:00
社区维护,大家都是用的同一套方案。新人进来就会用。
你使用全局对象做的比 vuex 优秀的话可以自己做,团队没能力维护的话不如 vuex 来的方便。 |
2
nianyu 2020-05-14 16:25:25 +08:00
我一直把它理解成全局对象用
|
3
murmur 2020-05-14 16:27:28 +08:00
vuex 可以绑定模板,全局变量不能,得自己 watch
|
4
guolaopi 2020-05-14 17:26:49 +08:00
@murmur #3
+1 其实本质上就是当“全局变量”用的,只不过优化了一些流程(如改变数据和获取数据)。 vuex 的 actions 是异步的且会按顺序执行, 从 action => mutation => getters 这一个流程保证在同时修改一个数据时,数据几乎不会被污染(没具体测试过)。 另外可以通过 computed 来实现模板中的双向绑定,全局变量不可以,要使用 watch 方式 ( watch 我记得性能好像差一点?也可能我记错了?望有大佬解答关于 watch 和 computed 性能差异 (其实应该也可以自己实现一套机制,来解决多次不同时修改一个全局变量的值后结果是期望值, 且实现一套机制挂载到根示例下使其也可以通过 computed 来双向绑定,但是实现这么多的话不等于自己做一套 vuex 吗) |
5
rabbbit 2020-05-14 17:35:48 +08:00
就是把全局对象(state)和修改全局对象的代码(mutation action)集中在一起,便于管理 /调试.
vuex 禁止直接修改 state, 多人合作的时候,如果谁都能改全局对象的话,就很难调试了. 修改全局对象时候, 还能用 vue devtools 跟踪流程,便于调试. |
6
rabbbit 2020-05-14 17:41:46 +08:00
不过,因为不建议在 action 里修改 state, 所以很容易写出这种代码...
mutations: { setName(state, name) { state.name = name; }, }, actions: { setName({ commit }, name) { commit('setName', name); }, }, |
7
zhuweiyou 2020-05-14 18:00:55 +08:00
全局变量没问题,但是它不会 “响应”,就是 “数据发生改变,视图不会自动刷新”
你要自己写 “watch” 的逻辑 |
8
namelosw 2020-05-14 18:13:41 +08:00
> 全局对象一样可以做到
我觉得你就是想一想,根本没仔细试过是不是可行。 |
9
JayLin1011 2020-05-14 19:55:52 +08:00
Vuex 屬於 Vue 生態全家桶的一部分,有很棒的功能和使用場景,但是不是必須的,你不用也可以,因為「 Flux 架构就像眼镜:您自会知道什么时候需要它。」。
|
11
Doracis 2020-05-15 09:24:41 +08:00 1
团队项目看 vuex 就很省心,比如权限或者登录状态,即使刚进项目,也可以直接拿来用,节省时间,不用重新读一遍代码
|
12
ccyu220 2020-05-15 09:39:39 +08:00
个人理解是,可安全异步操作的全局对象。
|
13
SilentDepth 2020-05-15 14:21:26 +08:00 1
Vuex 是一个「解决方案」,或者「业务模型」。如果你就那么一两个全局状态,引用也不多,用谁都差不多。但等你状态再多一点,衍生逻辑也多一点,即使你不用 Vuex 也会不由自主地搞一个类似的「全局状态管理器」。Vuex 就是给你省了自己造轮子的工夫。
|
14
faceRollingKB 2020-05-23 20:02:18 +08:00
全局变量+跟 vue 状态系统对接
缺点:state 、getters 、mutation 其实是一个 property 的 value 、get 、set 定义,vuex 把这几个属性描述分开了,写起来很麻烦,另外在架构设计过程中跟全局变量有着一样的问题,就是无法适应多变的组件、状态关系,例如部分组件需要用到部分公共状态,实现起来就很麻烦,要自己控制状态的生命周期、命名空间 |
15
jabala 2020-06-03 23:07:36 +08:00 via iPhone 1
vuex 跟把全局数据挂到根组建,然后用$parent 有什么区别
|
16
96412hj 2020-07-02 10:08:41 +08:00
我一般在 vuex 中处理异步的数据,比如 ajax,utils 文件夹 format 数据,.vue 文件调用,使用 vuex 中的 module,确实挺香的,我自己觉得代码梳理起来很方便
|
17
wisetc 2021-10-26 00:10:05 +08:00
存储全站数据。缓存。reactive. accessible method. modules. pure.
|