解决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使用activex控件的代码
Jan 27 Javascript
javascript验证身份证号
Mar 03 Javascript
js控制div弹出层实现方法
May 11 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 Javascript
详解vue项目中使用token的身份验证的简单实践
Mar 08 Javascript
Vue中props的详解
May 16 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 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实现伪静态方法汇总
2016/01/13 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Django celery异步任务实现代码示例
2020/11/26 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
PHP经典面试题
2016/09/03 面试题
EJB3推出JPA的原因
2013/10/16 面试题
大专计算机个人求职的自我评价
2013/10/21 职场文书
审计工作个人的自我评价
2013/12/25 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
工厂车间标语
2014/06/19 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
计划生育汇报材料
2014/12/26 职场文书
建国大业观后感
2015/06/01 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Python序列化模块JSON与Pickle
2022/06/05 Python