我的商店设置为
# State
export default {
servers: []
}
和我的 getter 如下
# Getter
export function serverById (state, id) {
return state.servers.find(server => server.id === id)
}
我从Vue组件中调用我的吸气剂
computed: {
...mapGetters({
// server: 'servers/serverById'
}),
getServers () {
return this.$store.getters['servers/serverById'][22]
}
}
我不断得到
vue.runtime.esm.js?2b0e:619 [Vue警告]:安装的挂钩中存在错误: “ TypeError:无法读取未定义的属性'22'”
当我换成圆括号时
computed: {
...mapGetters({
// server: 'servers/serverById'
}),
getServers () {
return this.$store.getters['servers/serverById'](22)
}
}
[Vue警告]:挂接的钩子中出现错误:“ TypeError: this。$ store.getters.servers / serverById不是函数“
我尝试将mapGetter
选项与方法结合使用,但还是没有运气。
methods: {
getServerDetails (id) {
return this.server(id)
}
}
答案 0 :(得分:1)
vuex.vuejs.org/guide/getters.html查找“方法样式访问”部分。在吸气剂中,您需要返回带有id参数的方法。
export function serverById (state) {
return id => state.servers.find(server => server.id === id)
}
并用
this.$store.getters['servers/serverById'](22)
答案 1 :(得分:0)
您的吸气剂应采用以下格式:
serverById : (state) => (id) => {
return state.servers.find(server => server.id === id)
}
对于命名空间模块,您可以使用以下方式访问getters
...mapGetters('myNamespacedModule', ['myGetterName'])