解决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学习笔记4 Eval函数
Jan 11 Javascript
为jQuery.Treeview添加右键菜单的实现代码
Oct 22 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
Textarea根据内容自适应高度
Oct 28 Javascript
使用apply方法实现javascript中的对象继承
Dec 16 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
May 16 Javascript
在Uni中使用Vue的EventBus总线机制操作
Jul 31 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
js表头排序实现方法
2015/01/16 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
vuex存储token示例
2019/11/11 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
Django添加sitemap的方法示例
2018/08/06 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
远程教育培训心得体会
2016/01/09 职场文书
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server