راکت
5 پاسخ

nextTick در vue js

سلام اگر کسی درباره nextTick در vue js چیزی می دونه لطفا یه توضیح بده

@ali.bayat
@hesammousavi


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
4

بعد از اینکه داده ای رو تغییر دادی و VueJS هم DOM رو آپدیت کرد، nextTick به شما اجازه میده تا قبل از اینکه این تغییرات در مرورگر بارگزاری بشه، بتونی کاری انجام بدی.

در عمل خیلی شبیه به setTimeout هست اما تفاوت هایی هم داره

<template>
  <div class="hello">
{{ msg }}
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
return {
    msg: 'One'
}
  },
  mounted() {
  this.msg = 'Two';

  this.$nextTick(() => {
      this.msg = 'Three';
  });
  }
}
</script>

در مثال بالا شما Three رو خواهی دید
اما اگر از setTimeout استفاده کنی.. یه لحظه بسیار کوتاه Two رو میبینی و بعدش Three


اتفاقی که در setTimeout میفته: VueJs ابتدا DOM رو آپدیت میکنه و msg برابر ۲ میشه. سپس کنترل رو به مرورگر میده. مرورگر ۲ رو نمایش میده و سپس callback رو فرا میخونه و msg برابر ۳ میشه و اون وقفه دیده میشه.

اتفاقی که در nextTick میفته: VueJs ابتدا DOM رو آپدیت میکنه و msg برابر ۲ میشه. callback فراخوانی میشه .. msg برابر با ۳ میشه و در مرورگر به نمایش در میاد.


حمید پیراسته
حمید پیراسته
@aria.tour6 سال پیشمطرح شد
0

@ali.bayat
خیلی ممنون


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
1

موفق باشی..


سید حسین موسوی
سید حسین موسوی
تخصص :بک اند دولوپر (لاراول) فرانت (ویو جی اس)
@shm3795 سال پیشمطرح شد
0

واقعا احسنت به شما جناب بیات احسنت
@ali.bayat


محسن مهری
محسن مهری
تخصص :برنامه نویس back-end با زبان php framework laravel
@mohsen.mehri61014 سال پیشمطرح شد
0

وقتی از nexttick استفاده میکنیم، انگار که این کد ها رو اخرین خط فایلمون نوشتیم : مثال :

<template>
  <div >
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
return {
}
  },
  mounted() {
console.log("one")

  this.$nextTick(() => {
console.log("two")  
});
  }

console.log("three")
}
</script>
// out put : 
one 
three 
two

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام