解决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实现页面加载时弹出对话框代码
Apr 19 Javascript
js判断url是否有效的两种方法
Mar 04 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
js格式化时间的简单实例
Nov 27 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
Oct 20 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 Javascript
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
解决cordova+vue 项目打包成APK应用遇到的问题
May 10 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 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
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
Bootstrap精简教程
2015/11/27 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
Python中的生成器和yield详细介绍
2015/01/09 Python
Python线程的两种编程方式
2015/04/14 Python
用python实现对比两张图片的不同
2018/02/05 Python
python opencv之SIFT算法示例
2018/02/24 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
Java基础知识面试题
2014/03/25 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
建筑工程毕业生自我鉴定
2014/01/14 职场文书
师生聚会感言
2014/01/26 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
公休请假条
2014/04/11 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
综合测评自我评价
2015/03/06 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis