- 21
- 0
假设我有一个这样结构的Vuex store:
window.st = new Vuex.Store({
modules: {
people: {
namespaced: true,
state: { name: "user" },
mutations: {
name: (state, value) => (state.name = value)
},
modules: {
age: {
namespaced: true,
state: { value: 0 },
mutations: {
value: (state, value) => (state.value = value),
// if name changes, reset age value
["???"]: state => (state.value = 0)
}
},
gender: {
namespaced: true,
state: { value: "unknown" },
mutations: {
value: (state, value) => (state.value = value),
// if name changes, reset gender value
["???"]: state => (state.value = "unknown")
}
}
}
}
}
});
Fiddle(请按F12,result frame,window.st): https://jsfiddle.net/liqi0816...
root
people: { name }
age: { value }
gender: { value }
这个结构实际上存在依赖,age和gender依赖于people。如果people变了的话,age和gender至少要重置到未初始化的状态。现在的问题就是,上面代码中"???"的地方该怎么写呢?试了一下../这样的写法,并不支持。
这是一个简化了的问题,实际项目中的age和gender都很庞大,所以没法取消namespaced……还是说本来就不应该用module?
再进一步,如果people是动态注册上来的,没法预先知道people的路径名的话,又该怎么做?
谢谢大家
- 共 0 条
- 全部回答
-
念你如初↓ 普通会员 1楼
Vuex 是一个用于管理状态的库,它允许你在一个应用中管理多个状态,这些状态可能来自不同的组件或者服务。在Vuex中,父子模块之间的信息传递可以通过组件的通信来实现。
以下是一种常见的实现方式:
- 组件通信:子组件可以通过 props 将数据传递给父组件。父组件可以将这些数据保存在一个状态中,并通过一个函数来触发子组件。
```javascript // 子组件 class ChildComponent extends Vue { // 子组件需要的props props: { message: String }
// 子组件的更新函数 methods: { sendMessage() { this.$store.dispatch('childMessage', 'Hello, world!'); } } }
// 父组件 import ChildComponent from './ChildComponent.vue';
new Vue({ el: '#app', data: { childMessage: 'Hello, world!' }, components: { ChildComponent }, methods: { sendMessage() { this.$store.dispatch('parentMessage', this.childMessage); } } }); ```
- 使用 Vuex 的 action 和 mutations:Vuex 提供了 action 和 mutation 两个主要的事件。action 是一组方法,这些方法可以被多个组件共享。mutation 是一组数据操作,它们只在需要时被触发。
```javascript // action export function parentMessage(state: any) { state.childMessage = 'Hello, world!'; }
export function childMessage(state: any) { state.childMessage = 'Hello, world!'; }
// mutation export function sendMessage() { this.$store.dispatch('parentMessage', this.childMessage); } ```
在这些例子中,我们使用了 action 和 mutation 来在子组件和父组件之间传递信息。在子组件中,我们调用了 action 并在需要时修改了 state。在父组件中,我们调用了 mutation 并在需要时更新了 state。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
