解决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 相关文章推荐
angularjs实现与服务器交互分享
Jun 24 Javascript
JavaScript插件化开发教程 (二)
Jan 27 Javascript
jQuery scrollFix滚动定位插件
Apr 01 Javascript
JavaScript实现多个重叠层点击切换效果的方法
Apr 24 Javascript
jQuery实现可编辑的表格实例讲解(2)
Sep 17 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
Jan 17 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
webpack4简单入门实例
Sep 06 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 Javascript
js 图片懒加载的实现
Oct 21 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入门速成(2)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
jQuery操作select的实例代码
2012/06/14 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
深入探讨前端框架react
2015/12/09 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
python实现图片批量剪切示例
2014/03/25 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Python下简易的单例模式详解
2019/04/08 Python
python GUI计算器的实现
2020/10/09 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
超市业务员岗位职责
2013/12/05 职场文书
《口技》教学反思
2014/02/21 职场文书
公休请假条
2014/04/11 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python