vue中的$forceUpdate是强制更新的意思
数据的绑定都不用我们操心,例如在data中有一个name的变量,你修改它页面的内容就会自动发生变化。
但是如果对于一个复杂的对象,例如一个对象数组,你直接去给数组上某一个元素增加属性,vue就无法知道发生了改变。
//父组件 <tx-a :info="info"></tx-a> data() { return { info:{} } },
//子组件
<div>
info:{{ info }}
<input :value="info.name" @input="headleChange">
</div>
props:{
info:Object
},
methods: {
headleChange(e){
this.info.name = e.target.value;
}
},
我们尝试直接给info.name赋值,发现页面上没有效果;
那么就是利用$forceUpdate了,因为你修改了数据,但是页面层没有变动,说明数据本身是被修改了,但是vue没有监听到而已,用$forceUpdate就相当于按照最新数据给渲染一下。
方法1:
headleChange(e){ this.info.name = e.target.value; this.$forceUpdate() }
方法2:
headleChange(e){ this.$set(this.info,'name',e.target.value) }
所有评论(0)