面试题答案
一键面试定义mutations
- 在Vuex store中定义:在创建Vuex store实例时,在
mutations
对象中定义方法。例如:
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
}
});
- 接收参数:
- 第一个参数:
state
,它是Vuex store中的状态对象。通过修改这个对象的属性来改变应用状态。例如上面increment
函数中的state
,可以直接修改state.count
。 - 第二个及后续参数:可以接收额外的载荷(payload)。例如:
- 第一个参数:
mutations: {
setValue(state, value) {
state.someValue = value;
}
}
这里的value
就是载荷,它可以是任何类型的数据,根据具体需求传递。
在组件中触发mutations修改应用状态
- 使用
mapMutations
辅助函数(在组件的methods
中):- 首先在组件中导入
mapMutations
:
- 首先在组件中导入
import { mapMutations } from 'vuex';
- 然后在组件的
methods
中使用mapMutations
将mutations映射为组件的方法:
export default {
methods: {
...mapMutations([
'increment',
])
},
mounted() {
this.increment();
}
};
- 直接通过
this.$store.commit
触发:
export default {
methods: {
updateState() {
this.$store.commit('increment');
// 如果mutations需要载荷
this.$store.commit('setValue', 'new value');
}
}
};
通过以上两种方式,可以在Vue组件中触发mutations从而修改Vuex中的应用状态。