解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
一、在我们使用vue进行开发的过程中,可能会遇到一种情况:
当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去;
向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为Vue无法探测普通的新增属性,需要用vue内置的方法
二、Vue.set()响应式新增与修改数据
此时我们需要知道Vue.set()需要哪些参数,官方API:https://cn.vuejs.org/v2/api/#Vue-set
调用方法:Vue.set(target,key,value)或者this.$set(target,key,value);
target:要更改的数据源(可以是对象或者数组)
key:要更改的具体数据
value:重新赋的值,
调用:this.$set(target,key,value);
补充知识:vueRenderscopedSlots
render中slot的一般默认使用方式如下:this.$slots.default对用template的
在render函数中动态使用多个slot,并且给slot传值
一、我的业务逻辑:
使用了三个组件,
组件A调用组件B,组件B调用组件C,组件C是自己封装的render渲染组件。
组件A希望将自己自定义的插槽插到C组件,C组件渲染出自定义的内容,并且将C组件的值传递给B组件和A组件,B组件是对C组件进行更大一层的封装
A组件调用B组件
{{field.field.rowData.name}}
A组件引用B组件,slot-scope接收从B组件中传出来solt的值,slot=“name”,是为插槽具名;
B组件中调用C组件的render函数
B组件span中slot是动态的值,和A组件中的slot同一个值,才能接受来自A组件自定义的插槽,
field是来自于C组件中传递的值
C组件是render函数
h( "td", { style:{width:field.width+"px"}, class:{borderRight}, //作用域插槽格式 //{name:props=>VNode|Array} scopedSlots:this.$scopedSlots.name, //如果组件是其他组件的子组件,需为插槽指定名称 slot:'name' }, this.$scopedSlots.name({ field:field, rowData:rowData, }) );
C组件往上传递的值就是{field:'',rowData:''}的对象
以上这篇解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。