Vue中的$nextTick的用法

文章介绍了Vue.js中的$nextTick方法,用于在DOM更新之后执行回调函数。在修改数据并需要基于新DOM执行操作时,应当使用$nextTick。文中通过一个编辑待办事项的例子展示了$nextTick如何确保在编辑模式切换和输入框聚焦等操作中正确更新视图。
摘要由CSDN通过智能技术生成
$nextTick

1,语法:this.$nextTick(回调函数)

2,作用:在下一次DOM更新结束后执行其指定的回调

3,什么时候用:当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行

<template>
  <div>
    <li>
      <label>
        <input type="checkbox" :checked="items.state" />
        <span v-show="!items.isEidt">{{ items.todoName }}</span>
        <input ref="fcInput" v-show="items.isEidt" type="text" :value="items.todoName"
          @blur="removeMouse(items, $event)">
      </label>
      <button class="btn btn-danger">删除</button>
      <button class="btn btn-eidt " v-show="!items.isEidt" @click="eidtTodo(items)">编辑</button>
    </li>
  </div>

</template>

<script>
export default {
  name: 'MyItem',
  props: ['items', 'checkTodo', 'delTodos'],
  data() {
    return {
      todo: this.todos
    }
  },
  methods: {
    eidtTodo(todo) {
      //hasOwnProperty是用来检测属性是否为对象的自有属性,如果是,返回true,否者false; 参数指要检测的属性名;
      if (todo.hasOwnProperty('isEidt')) {
        console.log('有isEidt')
        todo.isEidt = true
        //使用nextTick在数据更新渲染完毕执行操作Dom的 否则操作dom没有作用
        this.$nextTick(() => {
          this.$refs.fcInput.focus()
        })
      } else {
        //使用vue的set绑定响应式数据
        this.$set(todo, 'isEidt', true)
        console.log(todo)
      }
    },
    removeMouse(todo, e) {
      todo.isEidt = false
        //使用全局事件总线在组件之间进行数据传输
      this.$bus.$emit('updateTodo', todo.id, e.target.value)
    }
  },


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值