vue.js - v-for 组件不会实时更新
问题描述
我有一个Data
从 Vuex 获取状态的父组件,我使用该状态生成一些子组件Table
,我将一些 Vuex 数据作为道具传递给这些子组件,所有这些都在v-for
.
<template>
<table v-for="(item,index) in data"
:key="index + item.id"
:propX="item.x"
:propY="item.y"
/>
</template>
<script>
name: "Data",
components: {
Table
},
computed:{
data(){
return this.$store.state.data;
}
}
</script>
我的Table
组件也改变了 Vuex 状态,我可以看到Data
组件内部的状态改变得很好(vue 开发工具),但是 Data 组件不会更新我的Table
组件的 props。
解决方案
这里有几个问题:
- 不要为组件和计算值使用保留名称(不要使用
table
) - 请注意,如果您的状态是对象数组或嵌套对象,则它可能不是反应式的。您必须重新分配对象/数组或使用
set
方法才能使其具有反应性。
一些例子
// update objects
this.$set(this.$store.state.data, 'a', 1)
Vue.set(this.$store.state.data, 'a', 1)
this.$store.state.data = Object.assign({}, oldObject, { a: 1 })
//update array of objects
this.$store.state.data = [...data, newObject]
推荐阅读
- oracle12c - AF 表列手动拉伸
- forms - 在语义 UI 中,处理“过渡:元素不再附加到 DOM。无法动画”
- javascript - 向我的 js 添加新功能时提示不起作用的问题?
- elasticsearch - 过滤文档中的 Elasticsearch
- python - 在计算距离矩阵时遇到错误:“RuntimeWarning:sqrt 中遇到无效值”
- dart - Flutter [desktop]:如何在没有文本字段的情况下从物理键盘获取输入?
- firebase - 使用 Firebase Cloud Functions、Messaging、Firestore 制作自动通知
- python - 无法访问当前工作目录中的文件 - 'FileNotFoundError: [Errno 2] 没有这样的文件或目录'
- python - 在解析 JSON 文件数据时,根据 Python 配置文件中提到的位置添加具有空值的缺失字段
- angular - Angular 2+如何在对等模块中引用组件