حمید پیراسته
4 سال پیش توسط حمید پیراسته مطرح شد
5 پاسخ

nextTick در vue js

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

@ali.bayat
@hesammousavi


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
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.tour 4 سال پیش مطرح شد
0

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


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

موفق باشی..


سید حسین موسوی
تخصص : بک اند دولوپر (لاراول) فرانت (...
@shm379 3 سال پیش آپدیت شد
0

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


محسن مهری
تخصص : برنامه نویس back-end با زبان...
@mohsen.mehri6101 2 سال پیش مطرح شد
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

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

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