使用store中的index遍历store中的数组,因为数组无法改变,即使index改变也无法在视图中更新
程序员文章站
2022-07-09 19:10:52
...
首先前情是一些vuex的理解,不理解这些是很难解决这个错误的。Vue 理解之白话 getter/setter详解
https://www.jb51.net/article/159812.htm
mapState的作用是为了方便。在store.js中定义了count,按道理在index.js中调用是this.$state.count,然后如果而只需要用count声明在了mapState中,就可以直接使用count了。后面的’ count '内的变量是store里面的。
computed: mapState({ // mapState相当于一个把store中的count映射到这个文档里面来
count: 'count',
})
其他也算如此:
https://www.jb51.net/article/138226.htm
我遇到的问题如下,首先是index.vue的模板部分:
//index.vue 其中itemDetail和itemNum都是store中的变量
<header>{{itemDetail[itemNum].topic_name}}</header>
然后是index.vue的state的定义,一般来说只要itemNum和itemDetail的依赖发生变化,就能够在视图中发生变化:
computed: mapState([
'itemNum', //第几题
'itemDetail', //题目详情
]),
因为用了mapState,可以直接在index.vue中使用,但是因为虽然itemNum更新,但是对视图而言itemDetail以及相关依赖没有更新,所以视图不会更新会一直保持原来的。
正确的做法应该是再定义个普通的compute变量,因为写在compute里面所以很他依赖的发生变化视图才会发生变化。
<header class="item_title">{{item_index}}</header>
注意这里如果用的没有mapState的this.$store.state.itemDetail是不能够成功的。
computed: mapState({
itemNum:'itemNum', //第几题
itemDetail:'itemDetail', //题目详情
item_index: function () {
// 这里就是computed的原有用法
return this.itemDetail[this.itemNum-1].topic_name;
}
上一篇: Elasticsearch配置参数说明
下一篇: 三、堆栈和队列