- action可以是异步的,mutation必须是同步的,不然devtools观察不到mutation触发后的异步情况
- store.commit -> 分发 mutation,store.dispatch -> 触发action
饶了一圈先触发action是为了action可以执行任何异步操作
mutation 必须同步执行,Action 就不受约束!我们可以在 action 内部执行异步
操作
*问:我们的异步回调可以不再action中请求,而是当页面里的回调成功直接commit不是一样的吗,这个时候action也是简单的触发mutation,没有执行任何异步
而且,感觉异步调接口等方法还是写在各自页面比较好,写在action里太杂乱,易冲突。
例子:一级平台(action里请求接口传回调函数),IOE(页面回调里触发改值,action也是同步)
*答:在action中可以引入所有mutation-type,如果在每个页面自己commit,那每个页面就要引入
mutation-type,不方便。
经过dashboard实践,最终发现,在页面里组织参数与回调方法,调用各自的action,action在dispatch封装ajax的action,在各自的action回调中可以触发commit保存至store - store.dispatch 可以处理被触发的action的回调函数返回的Promise,并且store.dispatch仍旧返回Promise
- Modules
modules是每个模块对象,包含state,mutations,actions,getters。
对于模块内部的 getter,根节点状态会作为第三个参数 - Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,context不是store本身,因为它可能存在于局部模块化内。