如何使用 Nuxt 组件将参数传递给 vuex getter 方法? (同时保持三点符号)
How to use a Nuxt component to pass a parameter to a vuex getter method? (while maintaining three dot notation)
目标: 我想观察 vuex 状态对象 (MATCH_DATA) 的变化,特定于道具 (topicId) 的值。所以,我想设置观察者来观察MATCH_DATA[topicId]。每当 MATCH_DATA[topicId] 更新时,我想调用一个函数(在这个早期的例子中只是记录它)。
但是,由于 MATCH_DATA 是一个 getter,我该如何向它传递参数? vuex getter 好像不是设计来接受参数的。我已经通过显式调用 this.$store.state.etc.etc 看到了一些示例。但是有没有办法在保留我目前拥有的三点符号的同时做到这一点?
或者,有没有更好的方法来实现这个目标而不涉及 vuex getter?
当前代码:
Nuxt 组件:
<script>
import { mapGetters, mapActions } from 'vuex';
export default {
props: ['topicId'],
computed: {
...mapGetters('sessionStorage', ['MATCH_DATA']),
},
watch: {
MATCH_DATA (newMatchData, oldMatchData) {
console.log(newMatchData);
}
},
mounted() {
this.SUBSCRIBE_TO_TOPIC(this.topicId);
},
methods: {
...mapActions('sessionStorage', ['SUBSCRIBE_TO_TOPIC'])
}
}
vuex 商店:
/* State */
export const state = () => ({
MATCHES: {},
});
/* GETTERS */
export const getters = {
MATCH_DATA: (state) => {
return state.MATCHES;
},
};
您的 getter 可以简单地 return 像这样的函数:
export const getters = {
MATCH_DATA: (state) => {
return topicId => {
// return something
}}
},
};
然后你可以创建一个计算 属性 来访问那些 getter:
export default {
computed: {
...mapGetters('sessionStorage', ['MATCH_DATA']),
yourComputedProperty () {
return this.MATCH_DATA(this.topicId)
}
}
}
然后您可以观察计算的 属性 对变化做出反应。
watch: {
yourComputedProperty (newData, oldData) {
console.log(newData);
}
}
目标: 我想观察 vuex 状态对象 (MATCH_DATA) 的变化,特定于道具 (topicId) 的值。所以,我想设置观察者来观察MATCH_DATA[topicId]。每当 MATCH_DATA[topicId] 更新时,我想调用一个函数(在这个早期的例子中只是记录它)。
但是,由于 MATCH_DATA 是一个 getter,我该如何向它传递参数? vuex getter 好像不是设计来接受参数的。我已经通过显式调用 this.$store.state.etc.etc 看到了一些示例。但是有没有办法在保留我目前拥有的三点符号的同时做到这一点?
或者,有没有更好的方法来实现这个目标而不涉及 vuex getter?
当前代码:
Nuxt 组件:
<script>
import { mapGetters, mapActions } from 'vuex';
export default {
props: ['topicId'],
computed: {
...mapGetters('sessionStorage', ['MATCH_DATA']),
},
watch: {
MATCH_DATA (newMatchData, oldMatchData) {
console.log(newMatchData);
}
},
mounted() {
this.SUBSCRIBE_TO_TOPIC(this.topicId);
},
methods: {
...mapActions('sessionStorage', ['SUBSCRIBE_TO_TOPIC'])
}
}
vuex 商店:
/* State */
export const state = () => ({
MATCHES: {},
});
/* GETTERS */
export const getters = {
MATCH_DATA: (state) => {
return state.MATCHES;
},
};
您的 getter 可以简单地 return 像这样的函数:
export const getters = {
MATCH_DATA: (state) => {
return topicId => {
// return something
}}
},
};
然后你可以创建一个计算 属性 来访问那些 getter:
export default {
computed: {
...mapGetters('sessionStorage', ['MATCH_DATA']),
yourComputedProperty () {
return this.MATCH_DATA(this.topicId)
}
}
}
然后您可以观察计算的 属性 对变化做出反应。
watch: {
yourComputedProperty (newData, oldData) {
console.log(newData);
}
}