Vue.js VUEX存储类型的正确设置和使用
我正在使用来自Github的Vue js样板之一开发一个Chrome扩展。默认样板设置如下所示: store/index.jsVue.js VUEX存储类型的正确设置和使用,vue.js,vuex,Vue.js,Vuex,我正在使用来自Github的Vue js样板之一开发一个Chrome扩展。默认样板设置如下所示: store/index.js import Vue from 'vue'; import Vuex from 'vuex'; import mutations from './mutations'; import * as actions from './actions'; // all actions are imported as separate vars Vue.use(Vuex)
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import * as actions from './actions'; // all actions are imported as separate vars
Vue.use(Vuex);
export default new Vuex.Store({
state: { },
mutations,
actions
});
import * as types from './mutation-types';
export const setFoo = ({ commit }, payload) => {
commit(types.SET_FOO, payload); // SET_FOO is defined in the mutation-types file
};
...
import actions from './actions'; // actions are imported as separate functions
...
import * as types from './mutation-types';
export default {
[types.UPDATE_FOO] ({commit}, payload) {
commit(types.UPDATE_FOO, payload);
}
}
然后在actions.js中
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import * as actions from './actions'; // all actions are imported as separate vars
Vue.use(Vuex);
export default new Vuex.Store({
state: { },
mutations,
actions
});
import * as types from './mutation-types';
export const setFoo = ({ commit }, payload) => {
commit(types.SET_FOO, payload); // SET_FOO is defined in the mutation-types file
};
...
import actions from './actions'; // actions are imported as separate functions
...
import * as types from './mutation-types';
export default {
[types.UPDATE_FOO] ({commit}, payload) {
commit(types.UPDATE_FOO, payload);
}
}
我认为上面的方法缺乏一个基本的原因,为什么我们要使用突变类型文件-以避免重新键入突变和动作的名称
因此,我提出了一种不同的方法:
store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import * as actions from './actions'; // all actions are imported as separate vars
Vue.use(Vuex);
export default new Vuex.Store({
state: { },
mutations,
actions
});
import * as types from './mutation-types';
export const setFoo = ({ commit }, payload) => {
commit(types.SET_FOO, payload); // SET_FOO is defined in the mutation-types file
};
...
import actions from './actions'; // actions are imported as separate functions
...
import * as types from './mutation-types';
export default {
[types.UPDATE_FOO] ({commit}, payload) {
commit(types.UPDATE_FOO, payload);
}
}
然后在actions.js中
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import * as actions from './actions'; // all actions are imported as separate vars
Vue.use(Vuex);
export default new Vuex.Store({
state: { },
mutations,
actions
});
import * as types from './mutation-types';
export const setFoo = ({ commit }, payload) => {
commit(types.SET_FOO, payload); // SET_FOO is defined in the mutation-types file
};
...
import actions from './actions'; // actions are imported as separate functions
...
import * as types from './mutation-types';
export default {
[types.UPDATE_FOO] ({commit}, payload) {
commit(types.UPDATE_FOO, payload);
}
}
然后,在扩展中的任何地方,我们也可以导入变异类型并使用常量名称分派操作,如下所示:
store.dispatch(types.UPDATE_FOO, 'some value');
第二种方法在命名和分派/提交我们的动作/突变方面似乎更为实用。或者最新版本会有什么问题吗
以上哪一项通常是更好的练习?第一种方法更可取,但完全取决于您。官方
Vuex
文档中也使用了类似的方法。
第一种方法更可取,但完全取决于您。官方
Vuex
文档中也使用了类似的方法。
你能解释一下为什么第一种方法更可取吗?
Vuex
中的常见做法是存储你的突变
类型,而不是动作
类型,因此有些人可能会感到困惑。当然,您也可以创建自己的Vuex
store创建风格。例如,本文作者还使用了action
类型:。您能解释一下为什么第一种方法更可取吗?在Vuex
中,通常的做法是存储您的突变
类型,而不是action
类型,因此有些人可能会感到困惑。当然,您也可以创建自己的Vuex
store创建风格。例如,本文作者还使用操作类型:。