解决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 相关文章推荐
详谈JavaScript内存泄漏
Nov 14 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
js面向对象编程总结
Feb 16 Javascript
关于Bootstrap按钮组件消除黄框的方法
May 19 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
微信内置浏览器图片查看器的代码实例
Oct 08 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 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 删除cookie和浏览器重定向
2009/03/16 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
jquery ztree实现右键收藏功能
2017/11/20 jQuery
Vue header组件开发详解
2018/01/26 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
js module大战
2019/04/19 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python简易远程控制单线程版
2018/06/20 Python
Python3解释器知识点总结
2019/02/19 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
美国在线家装零售商:Build.com
2016/09/02 全球购物
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
求职信名称怎么写
2014/05/26 职场文书
师德承诺书
2015/01/20 职场文书
先进个人自荐书
2015/03/06 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
七一晚会主持词
2015/06/29 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
Redis性能监控的实现
2021/07/09 Redis