zoukankan      html  css  js  c++  java
  • vue中我改变了data中的一个值,但现在视图上没有实时更新,请问我怎么拿到更新后的值?

    • Vue在数据初始化的时候会对data,computed,watcher中的属性进行依赖收集,如果支持proxy,则直接使用proxy进行拦截,好处是可以深层次的进行拦截,如果不支持proxy,则使用object.defineProperty来进行数据拦截依赖收集。但是object.defineProperty无法做到深层次的监听,所以对属性进行递归算法去实现依赖收集,如果在初始化没有将属性收集进去,则很有可能没有收集到依赖,这种情况则需要使用$set, 在$set中重新进行依赖收集。    
    • 还有一种情况是直接操作数组的下标,也不会发生dom更新,其实vue对数组的push, pop,unshift, shift,splice,sort,reverse这几个方法进行了重新定义,如果使用这几个方法对数组进行操作,是可以监听到数据变化的。    
    • 还有一种,就是你的数据变更在dom挂载之前,比如,数组要放到一个容器里渲染,可是容器还没有挂载出来。导致找不到dom,这种情况就需要使用$nextTick。
  • 相关阅读:
    移动端hybrid开发复盘
    node/webpack 调试 loader 等技巧
    javascript(js)小数精度丢失的解决方案
    必经之路--买房之后需要走的流程--针对 组合贷款方式
    canvas 画半圆的两种方式
    svg path 画圆
    1.快速排序
    7.桥接设计模式
    6.适配器设计模式
    5.策略设计模式
  • 原文地址:https://www.cnblogs.com/guwufeiyang/p/13875717.html
Copyright © 2011-2022 走看看