cari
Rumahhujung hadapan webtutorial jsBagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

bertindak balasBagaimana untuk melaksanakan cangkuk? Adakah pelaksanaan React Hooks perlu bergantung pada Fiber? Artikel berikut akan menunjukkan kepada anda cara cangkuk dalam rangka kerja yang berbeza dilaksanakan. Saya harap ia akan membantu anda!

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Kail React adalah ciri-ciri yang muncul selepas gentian, jadi ramai yang tersilap percaya bahawa cangkuk mesti bergantung pada gentian untuk dilaksanakan tidak semestinya bersambung. [Cadangan berkaitan: Tutorial video Redis]

Kini, cangkuk bukan sahaja dilaksanakan dalam tindak balas, ciri ini juga dilaksanakan dalam rangka kerja seperti preact, react ssr, midway, dll., tetapi pelaksanaan mereka tidak Bergantung kepada serat.

Mari kita lihat bagaimana cangkuk dalam rangka kerja yang berbeza ini dilaksanakan:

Cara tindak balas melaksanakan cangkuk

tindak balas diterangkan melalui Antara Muka jsx, ia akan disusun ke dalam fungsi render oleh alat kompilasi seperti babel atau tsc, dan kemudian dilaksanakan untuk menjana vdom:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Fungsi render di sini ialah React.createElement sebelum React17:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Selepas React 17, ia ditukar kepada jsx:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Jsx-runtime ini akan diperkenalkan secara automatik, tidak perlu lakukan seperti sebelum ini Setiap komponen mesti mengekalkan import React.

Perlaksanaan fungsi Render menjana vdom:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Struktur vdom adalah seperti ini:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

dalam Before React16, vdom ini akan diberikan secara rekursif, menambah, memadam dan mengubah suai dom sebenar.

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Selepas React16 memperkenalkan seni bina gentian, terdapat langkah tambahan: mula-mula tukar vdom kepada gentian, dan kemudian jadikan gentian.

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Proses menukar vdom kepada gentian dipanggil reconcile, dan proses terakhir menambah, memadam dan mengubah suai dom sebenar dipanggil commit.

Mengapa kita perlu membuat penukaran sedemikian?

Oleh kerana vdom hanya mempunyai rujukan kepada anak nod anak dan tiada rujukan kepada induk nod induk dan nod adik beradik yang lain, ini menyebabkan keperluan untuk menjadikan semua nod vdom ke dom secara rekursif pada satu masa tanpa mengganggu.

Apa yang berlaku jika anda mengganggu? Oleh kerana nod induk dan nod adik beradik tidak direkodkan, kami hanya boleh terus memproses nod anak, tetapi tidak boleh memproses bahagian lain vdom.

Itulah sebabnya React memperkenalkan struktur gentian seperti ini, iaitu terdapat rujukan seperti pulangan nod induk, anak nod anak, adik beradik nod dan lain-lain, yang boleh terganggu, kerana jika ia rosak dan kemudian dipulihkan, semua item yang tidak diproses boleh ditemui.

Struktur nod gentian adalah seperti berikut:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Proses ini boleh diganggu, dan secara semula jadi ia boleh dijadualkan, iaitu proses schdule.

Jadi seni bina gentian dibahagikan kepada tiga peringkat: schdule, reconcile (tukar vdom kepada gentian) dan commit (kemas kini kepada dom).

Cakuk boleh digunakan dalam komponen fungsi untuk mengakses beberapa nilai, dan nilai ini disimpan pada nod gentian.

Sebagai contoh, komponen fungsi ini menggunakan 6 cangkuk:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Kemudian nod gentian yang sepadan mempunyai senarai terpautState yang dihafal bagi 6 elemen:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Digabungkan hingga seterusnya:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Kail yang berbeza mengakses nilai pada elemen yang berbeza dalam senarai terpaut Negeri yang dihafal, ini adalah tindak balas Prinsip cangkuk.

Senarai terpaut ini mempunyai fasa penciptaan dan fasa kemas kini, jadi anda akan mendapati bahawa pelaksanaan akhir useXxx dibahagikan kepada mountXxx dan updateXxx:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Fasa pelekap di sini ialah Cipta nod cangkuk dan pasangkannya ke dalam senarai terpaut:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

akan menggantung senarai terpaut cangkuk yang dibuat pada atribut memorizedState bagi nod gentian.

Apabila mengemas kini, anda secara semula jadi boleh mengeluarkan senarai cangkuk daripada nod gentian:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Dengan cara ini, dalam berbilang pemaparan, api useXxx boleh berada pada nod gentian Cari keadaan hafalan yang sepadan pada .

Ini adalah prinsip cangkuk tindak balas Anda boleh melihat bahawa ia menyimpan cangkuk pada nod gentian.

Jadi apakah perbezaan antara preact?

preact Cara melaksanakan cangkuk

preact ialah rangka kerja yang lebih ringan yang serasi dengan kod tindak balas Ia menyokong komponen kelas dan komponen fungsi, dan juga menyokong ciri tindak balas seperti cangkuk . Walau bagaimanapun, ia tidak melaksanakan seni bina gentian.

Kerana ia mempertimbangkan saiz muktamad (hanya 3kb), bukan prestasi muktamad.

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Kami baru mengetahui bahawa react menyimpan senarai cangkuk pada nod gentian Jika preact tidak mempunyai nod gentian, di manakah senarai cangkuk akan disimpan?

Sebenarnya, mudah untuk berfikir bahawa gentian hanya mengubah suai vdom untuk meningkatkan prestasi, dan tiada perbezaan penting daripada vdom Jadi, tidakkah cukup untuk menyimpan cangkuk pada vdom?

Memang, preact hanya meletakkan senarai cangkuk pada vdom.

Sebagai contoh, komponen fungsi ini mempunyai 4 cangkuk:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Pelaksanaannya adalah untuk mengakses cangkuk yang sepadan pada vdom:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Ia tidak membahagikan cangkuk ke tahap pelekap dan kemas kini seperti bertindak balas, tetapi menggabungkannya bersama untuk diproses.

Seperti yang ditunjukkan dalam rajah, ia menyimpan cangkuk dalam tatasusunan komponen.__cangkuk dan mengaksesnya melalui subskrip.

Komponen ini ialah atribut pada vdom:

1Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Iaitu, nilai cangkuk disimpan dalam tatasusunan vnode._component._hooks.

Bandingkan perbezaan antara react dan preact dalam melaksanakan cangkuk:

  • Secara tindak balas, senarai cangkuk disimpan dalam atribut fiberNode.memorizedState, manakala dalam preact, cangkuk list disimpan dalam Pada atribut vnode._component._hooks,

  • , senarai cangkuk dalam tindak balas disatukan hingga seterusnya, dan senarai cangkuk dalam preact ialah tatasusunan, diakses melalui subskrip

  • react memisahkan penciptaan dan kemas kini senarai terpaut cangkuk, iaitu useXxx akan dibahagikan kepada mountXxx dan updateXxx untuk dilaksanakan, manakala preact menggabungkannya bersama

Jadi, Pelaksanaan cangkuk tidak bergantung pada gentian Ia hanya mencari tempat untuk menyimpan data cangkuk yang sepadan dengan komponen Ia hanya perlu diambil semasa rendering disimpan.

Oleh kerana vdom, gentian dan pemaparan komponen sangat berkaitan, ia disimpan dalam struktur ini.

Seperti react ssr melaksanakan cangkuk, ia tidak wujud pada gentian mahupun pada vdom:

Bagaimana tindak balas ssr melaksanakan cangkuk

Malah, bertindak balas Dalam Selain csr, pakej -dom juga boleh melakukan ssr:

Gunakan kaedah render react-dom apabila csr:

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

use react apabila menggunakan ssr -Kaedah renderToString atau kaedah renderToStream dom/pelayan:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Adakah anda fikir penukaran vdom kepada gentian akan dilakukan semasa ssr?

Semestinya tidak Fiber ialah struktur yang diperkenalkan untuk meningkatkan prestasi pemaparan apabila berjalan dalam penyemak imbas, membuat pengiraan terganggu dan melakukan pengiraan apabila melahu.

Perenderan sisi pelayan secara semula jadi tidak memerlukan gentian.

Jika serat tidak diperlukan, di manakah ia menyimpan senarai cangkuk? vdom?

Memang betul ia boleh diletakkan dalam vdom, tetapi tidak.

Contohnya, useRef cangkuk:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Ia ialah senarai terpaut yang digabungkan dengan seterusnya bermula dari firstWorkInProgressHook.

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Nod cangkuk pertama yang dicipta oleh firstWorkInProgressHook menggunakan createHook:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

tidak dipasang pada vdom superior.

Kenapa?

Oleh kerana ssr hanya perlu render sekali sahaja dan tidak perlu dikemas kini, tidak perlu menggantungnya di vdom.

Hanya kosongkan senarai cangkuk setiap kali anda selesai memproses cangkuk setiap komponen:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Jadi, apabila ssr bertindak balas, cangkuk wujud dalam pembolehubah global.

Bandingkan perbezaan dalam prinsip pelaksanaan cangkuk antara csr bertindak balas dan ssr:

  • Csr akan mencipta gentian daripada vdom untuk menjadikan pemaparan boleh terganggu, meningkatkan prestasi melalui penjadualan melahu, tetapi tidak dalam ssr. vdom secara langsung menjadikan

  • csr dan menyimpan cangkuk ke nod gentian Dalam ssr, ia diletakkan terus dalam pembolehubah global, setiap komponen akan dikosongkan. Kerana ia tidak akan digunakan untuk kali kedua

  • csr akan membahagikan penciptaan dan kemas kini cangkuk kepada dua fasa: lekap dan kemas kini, manakala ssr hanya akan diproses sekali dan hanya mempunyai fasa penciptaan

Prinsip pelaksanaan cangkuk sebenarnya tidak rumit untuk menyimpan senarai terpaut dalam konteks tertentu, dan kemudian cangkuk api mengakses data yang sepadan daripada yang berbeza elemen senarai terpaut untuk melengkapkan logik masing-masing. Konteks ini boleh menjadi vdom, gentian atau pembolehubah global.

Walau bagaimanapun, idea cangkuk masih agak popular Rangka kerja sisi pelayan Taobao di pertengahan telah memperkenalkan idea cangkuk:

pertengahan Bagaimana untuk melaksanakan. cangkuk

pertengahan ialah rangka kerja Node.js:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Rangka kerja sebelah pelayan secara semula jadi tidak mempunyai struktur seperti vdom dan gentian, tetapi idea cangkuk tidak bergantung pada ini Untuk melaksanakan API cangkuk, anda hanya perlu meletakkan senarai terpaut dalam konteks tertentu.

tengah jalan melaksanakan API yang serupa dengan cangkuk tindak balas:

2Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?

Saya tidak tahu di mana senarai cangkuk itu wujud lagi .

Ringkasan

Cangkuk tindak balas adalah ciri yang muncul selepas seni bina gentian tindak balas Ramai orang tersilap percaya bahawa cangkuk mesti dilaksanakan dengan gentian. preact, dan Pelaksanaan cangkuk dalam react ssr dan midway tidak seperti ini:

  • react menukar vdom kepada gentian, kemudian menyimpan senarai cangkuk dalam atribut fiber.memorizedState, dan menggabungkannya melalui seterusnya
  • preact tidak melaksanakan gentian Ia meletakkan senarai cangkuk pada atribut vnode._component._hooks dan melaksanakannya sebagai tatasusunan Apabila mengakses
  • react ssr melalui subskrip, gentian tidak diperlukan, tetapi cangkuk tidak disertakan. Senarai terpaut digantung pada vdom, tetapi diletakkan terus pada pembolehubah global, kerana ia hanya perlu dipaparkan sekali selepas memaparkan komponen, cuma kosongkan pembolehubah global
  • ialah a Rangka kerja Node.js, ia juga melaksanakan Terdapat API yang serupa dengan cangkuk Kami belum menjelaskan butiran tentang tempat untuk meletakkannya, tetapi selagi ada konteks untuk menyimpan senarai cangkuk, ia akan baik

Jadi, adakah cangkuk bertindak balas perlu bergantung pada gentian untuk melaksanakannya?

Jelas sekali tidak, ia boleh digandingkan dengan gentian, vdom, pembolehubah global, malah mana-mana konteks.

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan cangkuk dalam tindak balas? Adakah saya perlu bergantung pada Fiber?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:掘金社区. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Beyond the Browser: JavaScript di dunia nyataBeyond the Browser: JavaScript di dunia nyataApr 12, 2025 am 12:06 AM

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript: meneroka serba boleh bahasa webJavaScript: meneroka serba boleh bahasa webApr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Evolusi JavaScript: Trend Semasa dan Prospek Masa DepanEvolusi JavaScript: Trend Semasa dan Prospek Masa DepanApr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Demystifying JavaScript: Apa yang berlaku dan mengapa pentingDemystifying JavaScript: Apa yang berlaku dan mengapa pentingApr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Adakah Python atau JavaScript lebih baik?Adakah Python atau JavaScript lebih baik?Apr 06, 2025 am 12:14 AM

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

Bagaimana saya memasang javascript?Bagaimana saya memasang javascript?Apr 05, 2025 am 12:16 AM

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.