TodoList案例_编辑与nextTick

TodoList案例_编辑

 先给把修改按钮搞一个,为了统一样式,因此写在App.vue中

 

<span v-show="!todo.isEdit">{ { todo.title }}</span>

 <input v-show="todo.isEdit" type="text" :value="todo.title" />

这个运用的很精妙,页面刚加载的时候是没有这个属性,那肯定是false,不显示的,当我们点击时,就给他设置了属性,并且为true,那么它就显示出来了

但是没有效果,这是因为Vue并没有监听到这个新添加的属性 

 

我们只需要将todo.isEdit = true改为 this.$set(todo,'isEdit',true) 即可,因为这样添加是一个响应式,是能被Vue监听到的

添加一个全局事件总线和失去焦点,让input框消失,同时优化了handleEdit()中,如果第一次点击,然它添加属性,之后的点击全是改它的isEdit属性为true 

 优化了样式中,浮动影响下面元素的问题

nextTick

 vue的时机并不是我们理解的,发现了数据发生改变就去上面进行重新渲染

而是

继续重新向下执行代码块,等所有的的代码都执行了一面,然后重新去上面渲染

 

它什么是这样的设计,就是怕我们下面也是这种判断,好家伙改一次重新渲染一次,太繁复了,还不如等你回调里面的代码都执行完了之后,在统计你一共改了多少的代码,然后一起上去重新解析

  this.$nextTick()指定的回调会在dom节点更新完毕后执行

意思就是先执行if else 内的代码 等模板解析完成后 在调用 $nexTick内的代码,否则你不这个代码,人家代码都执行完了,类似于一种定时器的一种效果

总结:

* 语法:``this.$nextTick(回调函数)``
* 作用:在下一次 DOM 更新结束后执行其指定的回调。
* 什么时候用:当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行。

猜你喜欢

转载自blog.csdn.net/weixin_64612659/article/details/129782898