是在Store仓库中,state是用来存储数据的。如果数据需要处理输出,比如数据需要过滤,一般我们可以写成computed。但是如果很多组件使用这个过滤后的数据,我们可以考虑共享这个数据。这就是getter的意思。我们可以将getter视为商店的计算属性。就像计算属性一样,getter的返回值根据其依赖项进行缓存,并且仅在其依赖项的值发生变化时才重新计算。示例:假设有一个考试成绩数组,我们需要在很多页面中使用它,但只需要显示不及格的成绩,这时候我们需要过滤掉不符合要求的数据。如下图:computed:{scoreArr(){returnthis.$store.state.score.filter(item=>item<60)}}如果这个属性用在很多地方,要么复制这个函数,要么提取一个共享函数然后在多个地方导入它,但无论哪种方式都不理想。Getters的使用Vuex允许我们在store中定义getters,第一个参数是state:constgetters={style:state=>state.style}Getters也会暴露store.getters对象,我们可以在表单中访问这些属性的值:computed:{doneTodosCount(){returnthis.$store.getters.doneTodosCount}}Getters也可以接受其他getters作为第二个参数:getters:{doneTodosCount:(state,getters)=>{returngetters.doneTodos.length}}mapGetters辅助函数mapGetters辅助函数将store中的getter映射到本地计算属性,用法与mapState类似。首先需要引入mapGetters函数:import{mapGetters}from'vuex'引入后可以使用:import{mapGetters}from'vuex'exportdefault{computed:{//使用对象扩展操作符混合getters进入计算对象...mapGetters(['doneTodosCount','anotherGetter',])}}如果你想给一个getters属性另一个名字,你可以使用对象形式,例如://ChangethenameofthegetterattributemapGetters({//mapthis.doneCountisstore.getters.doneTodosCountdoneCount:'doneTodosCount'})
