解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)


Posted in Javascript onOctober 27, 2020

一、在我们使用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);

补充知识:vue Render scopedSlots

render 中 slot 的一般默认使用方式如下: this.$slots.default 对用 template的<slot>的使用没有name 。 想使用多个slot 的话。需要对slot命名唯一。

在render函数中动态使用多个slot,并且给slot传值

一、我的业务逻辑:

使用了三个组件,

组件A调用组件B,组件B调用组件C,组件C是自己封装的render渲染组件。

组件A希望将自己自定义的插槽插到C组件,C组件渲染出自定义的内容,并且将C组件的值传递给B组件和A组件,B组件是对C组件进行更大一层的封装

A组件调用B组件

<index-grid>
     <div
      slot="name"
      slot-scope="field"
      class="check-link"
      @click="rowLinkClick"
     >
      <span>{{ field.field.rowData.name }}</span>
     </div>
</index-grid>

A组件引用B组件,slot-scope接收从B组件中传出来solt的值,slot=“name”,是为插槽具名;

B组件中调用C组件的render函数

<sub-grid ref="indexGridSub">
   <span
    v-for="(item, index) in fields"
    :key="index"
    slot="name"
    slot-scope="field"
   >
    <slot name="name" :field="field"></slot>
   </span>
 
  </sub-grid>

B组件span中 slot是动态的值,和A组件中的slot同一个值,才能接受来自A组件自定义的插槽,

field是来自于C组件中传递的值

C组件是render函数

h(
     "td",
     {
      style: { width: field.width + "px" },
      class: { borderRight },
      // 作用域插槽格式
      // { name: props => VNode | Array<VNode> }
      scopedSlots: this.$scopedSlots.name,
      // 如果组件是其他组件的子组件,需为插槽指定名称
      slot: 'name'
     },
     this.$scopedSlots.name({
      field: field,
      rowData: rowData,
     })
    );

C组件往上传递的值就是 {field:'', rowData: ''} 的对象

以上这篇解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
js indexOf()定义和用法
Oct 21 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
Jquery-data的三种用法
Apr 18 jQuery
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
Apr 19 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
小程序实现列表删除功能
Oct 30 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
Sep 25 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
js实现自定义滚动条的示例
Oct 27 #Javascript
vue移动端下拉刷新和上滑加载
Oct 27 #Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 #Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 #Javascript
js实现简易拖拽的示例
Oct 26 #Javascript
js实现限定范围拖拽的示例
Oct 26 #Javascript
js实现磁性吸附的示例
Oct 26 #Javascript
You might like
收集的PHP中与数组相关的函数
2007/03/22 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
Android面试宝典
2013/08/06 面试题
.NET方向面试题
2014/11/20 面试题
中专毕业自我鉴定
2013/10/16 职场文书
公司保密承诺书
2014/03/27 职场文书
空气环保标语
2014/06/12 职场文书
关于读书的活动方案
2014/08/14 职场文书
团队拓展活动总结
2014/08/27 职场文书
文明单位创建材料
2014/12/24 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
公司考勤管理制度
2015/08/04 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis