Sebab: Boleh meningkatkan prestasi. Jika kemas kini tak segerak tidak digunakan, komponen semasa akan dipaparkan semula setiap kali data dikemas kini, jadi atas sebab prestasi, Vue akan mengemas kini paparan secara tidak segerak selepas pusingan kemas kini data ini, dan bukannya mengemas kini serta-merta apabila terdapat kemas kini data; pandangan.
Persekitaran pengendalian tutorial ini: sistem windows7, versi vue3, komputer DELL G3.
nextTick memastikan DOM yang kami kendalikan dikemas kini.
(1) Senario aplikasi : Selepas paparan dikemas kini, kendalikan berdasarkan paparan baharu.
nextTick()
. nextTick()
. nextTick
. (2) Prinsip:
nextTick ialah contoh tipikal untuk menggunakan prinsip pelaksanaan JS yang mendasari kes tertentu Sebab untuk memperkenalkan mekanisme baris gilir kemas kini tak segerak ∶
Jikatidak menggunakan kemas kini tak segerak, maka akan memaparkan semula komponen semasa setiap kali data dikemas kini. JadiAtas sebab prestasi, Vue akan mengemas kini paparan secara tidak segerak selepas pusingan kemas kini data ini. Daripada mengemas kini paparan serta-merta apabila data dikemas kini.
nextTick(callback)
nextTick() menangguhkan panggilan balik ke
(3) strategi penurunan taraf vue
Vue secara dalaman cuba baris tak segerak Gunakan asli
Promise.then, MutationObserver dan setImmediate Jika persekitaran pelaksanaan tidak menyokongnya, setTimeout(fn, 0) akan digunakan sebaliknya untuk pemprosesan turun taraf. Tujuan pemprosesan turun taraf adalah untuk meletakkan fungsi ke dalam baris gilir microtask atau macrotask dan menunggu pelaksanaan dalam gelung acara seterusnya Anda boleh memuat semula baris gilir. flushCallbacks
dimuat semula dalam microtask gelung acara ini atau
. Ini bergantung pada persekitaran pelaksanaan semasa kod Jika persekitaran pelaksanaan semasa menyokong janji, maka nextTick sebenarnya akan menggunakan Promise untuk melaksanakan secara dalaman, dan kemudian muat semula baris gilir akan dilaksanakan dalam microtask gelung acara ini. . Sebab untuk memberi keutamaan kepada microtask: Mengemas kini baris gilir
dalam microtask akan dilakukan kurang daripada sekali dalam macrotask untuk pemaparan UI. 2 Mengapa Vue menggunakan pemaparan tak segerak
. Contoh: this.a = 1, this.b=2 (pemerhati yang sama) (1) Sebab: Jika tidak menggunakan kemas kini tak segerak , maka akan memaparkan semula komponen semasa setiap kali data dikemas kini. JadiAtas sebab prestasi, Vue akan mengemas kini paparan secara tidak segerak selepas pusingan kemas kini data ini. Daripada mengemas kini paparan serta-merta apabila data dikemas kini. (2) Proses: Vue melakukan kemas kini dom secara tidak segerak perubahan diperhatikan, Vue akan membuka baris gilir, dan kemudian menolak pemerhati yang memerhati perubahan data dalam gelung peristiwa yang sama ke dalam baris gilir ini. Jika pemerhati ini dicetuskan beberapa kali, ia hanya akan ditolak ke baris gilir sekali. Tingkah laku penimbalan ini boleh mengalih keluar data pendua dengan berkesan dan mengelakkan pengiraan dan operasi DOM yang tidak perlu. Dan dalam gelung acara seterusnya, Vue akan mengosongkan baris gilir dan melaksanakan kemas kini DOM yang diperlukan. 3) Analisis kod sumber: Apabila data perubahan , maklumkan pemerhati untuk melakukan operasi kemas kini melalui pemberitahuan Panggil kemas kini pemerhati secara berurutan melalui subs[i].kemas kini (pandangan bukan dikemas kini); Letakkan pemerhati ke dalam baris gilir tiada dalam baris gilir, pemerhati akan dipadamkan pada baris gilir (pandangan tidak dikemas kini); muat semula baris gilir pemerhati (kemas kini paparan); >pembangunan bahagian hadapan web]
Atas ialah kandungan terperinci Mengapakah pemaparan tak segerak vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!