model:
两种方式:
1.
{
state: {
data: { }
},
mutations: {
update(state, data) {
state.data = data;
}
},
actions: {
async updateData({ commit }) {
// ...异步请求略
commit('update', data);
}
}
}
需要调用 updateData
并通过 data
获取数据。
2.
{
actions: {
async getDate({ commit }) {
// ...异步请求略
return data;
}
}
}
直接调用 getData
拿到数据。
直观来看,方式 2 更简单,但是好像 Vue 的设计思想更偏向于方式 1 ?
求大神解答,如何选择。
好多人没有理解我的问题,我再补充下:
以上两种方式在组件中对应两种调用方式:
this.updateData().then(() => {
this.data;
})
2.
this.getData().then(data => {
data;
})
方式 1 要在 vuex
中存一份 state
,而很多情况下,我都要先调用 updateData
确保 state
中 data
是最新的。
方式 2 无需 state
,直接通过 action
getData
即获取到 data
,这样做看起来会简单一些,会不会有什么不合理的。
两种方法达到的效果是不一样的。
第二种做法,通过异步调用的数据,没有存储到store中,就意味着无法在其他组件中共享数据。
如果确实不需要共享数据,updateData就是个无状态变化的函数,没必要放到store里面;如果想功能复用,放到一个js文件中,其他组件import后使用。