使用vue,如果想对data数据派生一些状态,我们就用到计算属性或者侦听器,同样vux想要派生state中的一些状态,可以在store中定义一个getters属性,它相当于state的计算属性。只有它的依赖发生改变了,它的值才会被重新计算。
var store = new Vuex.Store({
state:{
count: 0,
msg: '你妈在哪里',
msg1: '在家'
},
getters: {
msgFilter: (state, getters) =>{
return state.msg.replace('你妈', '妈妈')
}
}
})
//App组件
<template>
<div>
<h2>App组件</h2>
//这里输出 妈妈在哪里
<h3>{{$store.getters.msgFilter}}</h3>
</div>
</template>
getters: {
msgFilter: (state, getters) =>{
return state.msg.replace('你妈', '妈妈')
},
anwserMsg: state => (msg1, msg2) =>{
return msg1 + + msg2
}
}
//App组件
//打印 妈妈说:我在家,你在哪里?
<h3>妈妈说:{{ $store.getters.anwserMsg('我在家,', '你在哪里?')}}</h3>
computed: {
//把msgFilter 修改成了 msg1
// anwserMsg 修改成了 msg2
...mapGetters({
msg1: 'msgFilter',
msg2: 'anwserMsg'
}),
//默认原来的名字
...mapGetters([
'msgFilter',
'anwserMsg'
])
}
原文:https://www.cnblogs.com/HJ412/p/10740029.html