- 实现依赖关系的原理:
- 在Vue组件中,计算属性会自动追踪其依赖的响应式数据。Vuex中的状态是响应式的,当
state.userInfo
中的任何属性发生变化时,由于userInfo
整体是响应式的,计算属性会重新计算。
- 核心代码:
<template>
<div>
<p>{{ userInfoStr }}</p>
</div>
</template>
<script>
export default {
computed: {
userInfoStr() {
const { name, age, email } = this.$store.state.userInfo;
return `姓名:${name},年龄:${age},邮箱:${email}`;
}
}
};
</script>
// store/modules/user.js
const state = {
userInfo: {
name: 'John',
age: 30,
email: 'john@example.com'
}
};
const mutations = {
// 这里可以定义修改userInfo的mutations,比如
UPDATE_USER_INFO(state, newInfo) {
Object.assign(state.userInfo, newInfo);
}
};
const actions = {};
export default {
state,
mutations,
actions
};
- 在Vuex的
index.js
中注册该模块(假设):
import Vue from 'vue';
import Vuex from 'vuex';
import user from './modules/user';
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
user
}
});