راکت

nextTick در vue js

5 پاسخ

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

@ali.bayat
@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

5
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بعد از اینکه داده ای رو تغییر دادی و 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

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

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

موفق باشی..

سید حسین موسوی
سید حسین موسوی
@shm379

تخصص: بک اند دولوپر (لاراول) فرانت (ویو جی اس)

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

محسن مهری
محسن مهری
@mohsen.mehri6101

تخصص: برنامه نویس back-end با زبان php framework laravel

وقتی از 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

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

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