解决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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
javascript 模拟点击广告
Jan 02 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 Javascript
Angular6封装http请求的步骤详解
Aug 13 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
Jan 06 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 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
zf框架的数据库追踪器使用示例
2014/03/13 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
vue--vuex详解
2019/04/15 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
python中urllib模块用法实例详解
2014/11/19 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
详解如何减少python内存的消耗
2019/08/09 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
追悼会上的答谢词
2014/01/10 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
企业环保标语
2014/06/10 职场文书
毕业生面试求职信
2014/06/23 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
公司员工辞职信范文
2015/05/12 职场文书
运动会宣传语
2015/07/13 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python