状态管理
如果你使用过 Vuex 那么恭喜你,可以很快的上手 X-BUILD 自带的状态管理,它是一个阉割版的 Vuex,仅保留了 State、Mutation、Action 的功能,另外提供了 watch 方法用于监听状态变化。
快速上手
通过 npm 安装 buildx 或在 X-BUILD 初始化时选择状态管理选项。
创建 store.js
import BuildX from 'buildx';
const params = {
state: {
name: 'codexu'
},
mutations: {
setName(state, payload) {
state.name = payload;
}
},
actions: {
getName(store) {
setTimeout(() => {
store.commit('setName', 'dispatch name');
}, 1000);
}
}
};
export default new BuildX(params);
在其他 js 中引入 store 实例,可以通过 commit 或 dispatch 改变 state, 通过 watch 监听 state 变化。
import store from './store';
store.watch('name', value => console.log(value));
store.commit('setName', 'commit name');
store.dispatch('getName');
配置参数
mutations、 actions 用法相似,mutations 用于同步,actions 用于异步,actions 通过调用 commit 提交给 mutations 再修改 state 属性。
mutations
mutations 是一个对象,每一个属性必须是一个函数,函数有两个属性 state 与 payload。
state: 指向实例的 state,用于修改属性的值。
payload: 通过 commit 方式传过来的值。
actions
actions 是一个对象,每一个属性必须是一个函数,函数有两个属性 store 与 payload。
store: 指向实例,可以通过 store.commit 提交 mutations 修改 state 的值。
payload: 通过 dispatch 方式传过来的值。
实例方法
commit(mutationKey, payload)
mutationKey: 传入你要执行的 mutation。
payload: 可以传递一些参数。
dispatch(actionKey, payload)
actionKey: 传入你要执行的 action。
payload: 可以传递一些参数。
watch(stateKey, callback)
stateKey: 传入你要监听的 state key。
callback: 当 stateKey 发生改变时会触发此函数。