【发布时间】:2020-11-17 23:07:28
【问题描述】:
我希望每次对象(我作为道具传输给子组件)发生更改时重新加载子组件。我读到 VueJs 无法检测到对象的变化。到目前为止一切顺利,我想出了以下想法:
每当我的对象发生变化时,我都会对普通变量进行更改,我也会通过道具将其传递给孩子。我的想法是通过更改正常变量来“强制”重新渲染子组件。但它似乎不起作用,我不明白为什么它不起作用。
父文件:
<template>
<compare-value :ocean="ocean" :update="updateComponent" v-if="ocean.length > 0"></compare-value>
</template>
<script>
import CompareValue from '@/views/compare/CompareValue'
...
components: {
CompareValue
},
...
updateComponent: 0,
...
methods: {
reloadCompnent() {
this.updateComponent += 1;
},
getData() {
this.ocean.push({
userid: userId,
data1: this.result.data_john,
data2: this.result.data_mike,
data3: this.result.data_meika,
data4: this.result.data_slivina,
})
this.reloadCompnent() //Force the reload of the component
}
}
</script>
子文件:
<template>
{{ update }}
</template>
<script>
...
props: [
'ocean',
'update'
],
...
</script>
据我了解,正常变量的更改会触发重新加载组件,但似乎我监督了一些事情。
【问题讨论】:
-
你不能用计算属性来做吗? vuejs.org/v2/guide/computed.html
标签: javascript vue.js vuejs2 vue-component reload