美文网首页
vue中的小坑

vue中的小坑

作者: 饥人谷_啦啦啦 | 来源:发表于2017-09-17 20:41 被阅读0次
  1. 数据绑定的问题。
    看官方文档的时候,发现一个疑问,当我们异步操作改变一个根级别的data 的时候,我们经常异步操作,然后拿到结果,直接赋值给这个对象,那么问题来了,这时候,这个对象是不是响应式的呢,,
    答案是肯定的。
test

操作的结果见下图

测试结果

为什么是这样,,而且和官方 推荐的操作方式不一样,第一个setTimeout也能成功呢。

this.project = Object.assign({},this.project,obj)

的方法明明不一样,为什么第一个setTimeout可以变成响应式的呢?

个人理解:

  • 官方推荐的做法,只是深拷贝了这个队象,最终结果是 让这个对象等于一个新的对象,和我们直接赋值是一样的。所以,,这个时候。project是响应式的,我们不用考虑去阅读源码就可以得到的推测( vue 官方并没有说改写了Object.assgin()方法)

  • 但是对于第二个setTimeout, 因为最开始我们在最开始 vue的 init阶段,并不能给这个数据绑定set和get 的方法,最终,vue也不能变成响应式的,所以,即使,我们能在控制台答应出来 list.a = ‘xxxxx' VUE的视图层也不能响应。

解决办法:

方法三

这三种方法,都行。

另外还有一个比较容易 迷茫的地方:

test1 test1 result

为什么这里会渲染呢,这个时候,难道 lala.text,是响应式的么。答案是不是的,如果我们代码写成这样,

test2

结果不能正常渲染 la.text 。。
为什么会是这样的,我们要注意到, VUE中DOM操作是一个异步的操作,会有一个延迟在的。
大致流程是这样的。

  • this.la = {}, 会触发setter,
  • setter 通知相关指令进行数据更新,
  • 然后 this.la['text'] = 'text'
  • 指令开始执行。这个时候去访问 this.la , la.text 已经存在了。

由此,我们来看一下第二种, 因为,this.la['text'] = 'text' 不能触发 setter ,他不是响应式的,所以,即使我们仍然能console.log ,但是,不是响应式的,根本不能触发 setter, 就谈不上更新了。

2 .对 生命周期的再次回顾 (比较重要的地方)

生命周期

这个应该是一个比较完整的生命周期的图示。
之前有点理解偏差.

  • 当我们需要得到数据之后,要操作一波DOM的时候,我们可以放在updated中去做,这时候就是当数据更新完成,组件也更新DOM了。。。但是好像官方不推荐使用updated,推荐使用 nextTick 去做。
reson
  1. 看vue 源码分析 之类的文章,得到的一些收获
源码

之所以,vue能做到响应式,基本上是因为 initState做的事情。。

init做的事 Obseve做的事 defineReactive 依赖收集 总结依赖收集 总结

文章参考:
vue源码分析
关于VUE实例的生命周期

相关文章

  • vue中的小坑

    数据绑定的问题。看官方文档的时候,发现一个疑问,当我们异步操作改变一个根级别的data 的时候,我们经常异步操作,...

  • Vue的构建版本

    使用Vue过程中遇到的坑:关于构建版本。 平时在使用Vue时,一般都是搭建vue-cli,今天在写一个小demo的...

  • vue中引入图片的小坑

    1.静态的img路径直接写你当前图片路径就好了 2.动态引入 图片资源放在 static 下 这是我代码中...

  • H5踩坑记录

    flex坑 水平居中 vue坑 vue组件 vue-awesome-picker 组件的使用vue-awesome...

  • Vue踩坑实录(二)

    在上一篇中说了一下踩过的前三个坑,剩下的坑就在这篇中全部搞定吧。Vue踩坑实录(一) Vue-cli .js?.V...

  • Vue探险记:使用v-model传递数组

    前几天,小坑在开发中遇到了一个问题:需要使用Vue传递一个数组,供后台查询。在这之前,小坑对v-model的使用已...

  • vue 的坑

    记录vue中遇到的坑(不管是组件ele组件还是vue本身)Element 组件中的bug 寻找地址:https:/...

  • vue/cli

    vue3入坑 加速github的访问 vue-cli的坑 vue/cli 官网Vue CLIvue cli 的包名...

  • 我的前端笔记

    目录 react 小程序 vue typescript 经验(踩坑) react useMemo 和 useCal...

  • Vue初探(一)——vue-router

    记录一下我在vue项目中经常用到的技巧,项目中踩的小坑和解决办法 使用vue-router中的meta,生成面包屑...

网友评论

      本文标题:vue中的小坑

      本文链接:https://www.haomeiwen.com/subject/aujmsxtx.html