解决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 页面 Mask实现代码
Jan 09 Javascript
js/jquery去掉空格,回车,换行示例代码
Nov 05 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
js简单工厂模式用法实例
Jun 30 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
Bootstrap每天必学之轮播(Carousel)插件
Apr 25 Javascript
webpack配置的最佳实践分享
Apr 21 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
如何手动实现一个 JavaScript 模块执行器
Oct 16 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
JS实现判断碰撞的方法
2015/02/11 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
Angular实现form自动布局
2016/01/28 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python Tkinter的图片刷新实例
2019/06/14 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Python打印不合法的文件名
2020/07/31 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
小学生新年寄语
2014/04/03 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
慰问信格式规范
2015/03/23 职场文书
2015年公司工作总结
2015/04/25 职场文书
python办公自动化之excel的操作
2021/05/23 Python
java设计模式--原型模式详解
2021/07/21 Java/Android
muduo TcpServer模块源码分析
2022/04/26 Redis