Terdapat dua cara untuk memulakan data dalam Vue: 1. Mod objek, sintaks "var data = {key-value pair}"; 2. Function mode, syntax "data: function () {return { key -pasangan nilai}" }". Perlu diingatkan bahawa permulaan data dalam komponen dan lanjutan tidak boleh menjadi Objek, jika tidak ralat akan dilaporkan. Tujuan menggunakan mod fungsi untuk data dalam komponen adalah untuk menghalang objek contoh berbilang komponen daripada berkongsi data yang sama dan menyebabkan pencemaran data.
Persekitaran pengendalian tutorial ini: sistem windows7, versi vue3, komputer DELL G3.
Data Vue mempunyai dua kaedah permulaan, fungsi dan objek, tetapi apakah senario yang boleh digunakan untuk kedua-dua situasi ini? Bolehkah ia bersifat universal? Dengan kedua-dua soalan ini, mari kita menganalisisnya bersama-sama
permulaan data
// 代码来源于官网示例 // 第一种定义方式 var data = { a: 1 } // 直接创建一个实例 var vm = new Vue({ data: data }) // Vue.extend() 中 data 必须是函数 var Component = Vue.extend({ // 第二种定义方式 data: function () { return { a: 1 } } })
Kod di atas menerangkan secara ringkas dua cara untuk menentukan data.
fungsi
objek
Demo tapak web rasmi juga menekankan bahawa permulaan data dalam lanjutan tidak boleh menjadi Gunakan objek. Jadi kenapa?
Analisis kod sumber
Menurut demo laman web rasmi, pemulaan data dalam Vue.extend tidak boleh menjadi Objek paksa ia ditulis sebagai Objek?
var Component = Vue.extend({ data: { a: 1 } })
Selepas dijalankan, konsol chrome secara langsung melaporkan ralat, maklumatnya adalah seperti berikut
vue.esm.js?efeb:591 [Vue warn]: The "data" option should be a function that returns a per-instance value in component definitions.
Dengan menganalisis kod sumber dan mesej ralat, apabila Vue.extend dicetuskan, ia akan melakukan operasi gabungan. Gabungkan komponen asas (dalam vmode, peralihan, dll.) dengan maklumat yang anda tentukan dalam lanjutkan melalui mergeField kepada pilihan Apabila digabungkan ke dalam data, ia akan mencetuskan strats.data, di mana ia akan menyemak sama ada data ialah fungsi, apa yang perlu diperhatikan di sini ialah penapis, komponen, dsb. dan data mengikuti dua set proses penggabungan Sila lihat ulasan kod untuk butiran, seperti berikut
// vue.extend 源码地址https://github.com/vuejs/vue/blob/dev/src/core/global-api/extend.js Vue.extend = function (extendOptions: Object): Function { ... // 在这里会触发mergeOptions方法 Sub.options = mergeOptions( Super.options, extendOptions ) ... } // mergeOptions 源码地址https://github.com/vuejs/vue/blob/dev/src/core/util/options.js export function mergeOptions ( parent: Object, child: Object, vm?: Component ): Object { ... const options = {} let key // parent对象内包含components、filter,、directive for (key in parent) { mergeField(key) } // child对象内对应的是Vue.extend内定义的参数 for (key in child) { if (!hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { // 这一步是根据传入的key找到不同的合并策略filter、components、directives用到合并策略是这个方法mergeAssets和data用到的不一样,当合并到data的时候会进入专属的合并策略方法内 const strat = strats[key] || defaultStrat options[key] = strat(parent[key], child[key], vm, key) } } // strats.data 源码地址https://github.com/vuejs/vue/blob/dev/src/core/util/options.js strats.data = function ( parentVal, childVal, vm ) { if (!vm) { // 如果data不是function的话会直接走下面的报错信息 if (childVal && typeof childVal !== 'function') { process.env.NODE_ENV !== 'production' && warn( 'The "data" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm ); return parentVal } return mergeDataOrFn(parentVal, childVal) } return mergeDataOrFn(parentVal, childVal, vm) };
Situasi lain
Malah, kod kami di atas hanyalah proses mudah Dalam pembangunan sebenar, situasi yang serupa termasuk: data tidak boleh ditakrifkan sebagai objek dalam subkomponen dan laluan, kerana mereka semua memanggil kaedah mergeOptions di bahagian bawah
Bilakah ia boleh ditakrifkan sebagai objek
Apabila vue dimulakan, seperti berikut
new Vue({ data: { linke: '//sinker.club' } })
Maksud
Baiklah, banyak yang telah diperkatakan di atas, jadi apakah maksud melakukan ini? Mengapakah situasi tersebut tidak boleh ditakrifkan sebagai objek? Malah, untuk menjawab soalan ini, anda perlu kembali ke js sendiri Seperti yang kita semua tahu, jenis data js dibahagikan kepada jenis rujukan dan asas termasuk Objek, Tatasusunan dan Fungsi tidak dijelaskan di sini.
var obj = {link: '//www.sinker.club'} var obj2 = obj var obj3 = obj obj2.link = "//gitlab.sinker.club" console.log(obj3.link) // "//gitlab.sinker.club"
Kod di atas Ia menggambarkan masalah Memandangkan obj3 dan obj2 kedua-duanya menunjuk ke alamat yang sama dalam ingatan, pengubahsuaian obj2 sudah tentu, salinan dalam boleh digunakan untuk menangani dengan masalah ini
JSON.parse(JSON.stringify(obj))
deepClone(obj)
Tetapi kedua-dua kaedah ini memerlukan pembangunan atau rangka kerja Anda perlu membuat salinan mendalam setiap kali Apabila jumlah data adalah besar, ia tidak bagus untuk prestasi. Takrifkan data sebagai fungsi
function data() { return { link: '//sinker.club' } } var obj = test() var obj2 = test() obj2.link ="//gitlab.sinker.club" console.log(obj.link) '//sinker.club'
Mengapa anda melakukan ini? Apakah senario penyelesaiannya?
Sebagai contoh, jika saya mentakrifkan subkomponen, data ditakrifkan sebagai objek Komponen ini dirujuk di berbilang tempat Jika salah satu data yang merujuk kepada komponen ini diubah suai. maka ia akan Menyebabkan data lain yang merujuk komponen ini berubah pada masa yang sama, tamat.
Pengetahuan lanjutan:
Apabila mentakrifkan contoh vue , atribut data boleh sama ada a Objek juga boleh menjadi fungsi
const app = new Vue({ el:"#app", // 对象格式 data:{ foo:"foo" }, // 函数格式 data(){ return { foo:"foo" } } })
Atribut data yang ditakrifkan dalam komponen hanya boleh menjadi fungsi
Jika data komponen ditakrifkan secara langsung sebagai objek
Vue.component('component1',{ template:`<div>组件</div>`, data:{ foo:"foo" }})
Anda akan mendapat mesej amaran
Penjelasan:
-
Komponen dalam vue digunakan untuk penggunaan semula , untuk mengelakkan penggunaan semula data, tentukan ia sebagai fungsi.
Data data dalam komponen vue hendaklah diasingkan antara satu sama lain dan tidak menjejaskan satu sama lain Setiap kali komponen digunakan semula, data data hendaklah disalin sekali tempat tertentu diduplikasi Apabila data data dalam komponen tempatan yang digunakan ditukar, data data komponen tempatan yang digunakan semula tidak akan terjejas. Ia adalah perlu untuk mengembalikan objek sebagai status komponen melalui fungsi data.
Apabila kita menulis data dalam komponen sebagai fungsi, data ditakrifkan dalam bentuk nilai pulangan fungsi, supaya setiap kali komponen digunakan semula, data baru akan dikembalikan, dengan Skopnya sendiri adalah serupa dengan mencipta ruang data peribadi untuk setiap tika komponen, membenarkan setiap tika komponen mengekalkan datanya sendiri.
Apabila tarikh komponen kami hanya ditulis dalam bentuk objek, kejadian ini menggunakan pembina yang sama Disebabkan ciri-ciri JavaScript, semua kejadian komponen berkongsi satu data, jadi Ia akan membawa kepada keputusan yang mengubah segala-galanya.
[Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]
Atas ialah kandungan terperinci Apakah kaedah untuk memulakan data dalam Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Populariti React termasuk pengoptimuman prestasi, penggunaan semula komponen dan ekosistem yang kaya. 1. Pengoptimuman prestasi mencapai kemas kini yang cekap melalui mekanisme maya dan mekanisme yang berbeza. 2. Penggunaan semula komponen mengurangkan kod pendua oleh komponen yang boleh diguna semula. 3. Ekosistem yang kaya dan aliran data sehala meningkatkan pengalaman pembangunan.

React adalah alat pilihan untuk membina antara muka pengguna yang dinamik dan interaktif. 1) Komponen dan JSX membuat UI berpecah dan menggunakan semula mudah. 2) Pengurusan negeri dilaksanakan melalui cangkuk UseState untuk mencetuskan kemas kini UI. 3) Mekanisme pemprosesan acara bertindak balas terhadap interaksi pengguna dan meningkatkan pengalaman pengguna.

React adalah rangka kerja front-end untuk membina antara muka pengguna; Rangka kerja back-end digunakan untuk membina aplikasi sisi pelayan. React menyediakan kemas kini UI yang komponen dan cekap, dan Rangka Kerja Backend menyediakan penyelesaian perkhidmatan backend lengkap. Apabila memilih timbunan teknologi, keperluan projek, kemahiran pasukan, dan skalabiliti harus dipertimbangkan.

Hubungan antara HTML dan React adalah teras pembangunan front-end, dan mereka bersama-sama membina antara muka pengguna aplikasi web moden. 1) HTML mentakrifkan struktur kandungan dan semantik, dan React membina antara muka dinamik melalui komponenisasi. 2) Komponen React Gunakan sintaks JSX untuk membenamkan HTML untuk mencapai rendering pintar. 3) Kitaran Hayat Komponen Menguruskan Rendering HTML dan Kemas kini secara dinamik mengikut keadaan dan atribut. 4) Gunakan komponen untuk mengoptimumkan struktur HTML dan meningkatkan keupayaan. 5) Pengoptimuman prestasi termasuk mengelakkan penyampaian yang tidak perlu, menggunakan atribut utama, dan menjaga tanggungjawab tunggal komponen.

React adalah alat pilihan untuk membina pengalaman front-end interaktif. 1) React memudahkan pembangunan UI melalui komponen dan DOM maya. 2) Komponen dibahagikan kepada komponen fungsi dan komponen kelas. Komponen fungsi adalah lebih mudah dan komponen kelas menyediakan lebih banyak kaedah kitaran hayat. 3) Prinsip kerja React bergantung kepada algoritma DOM dan perdamaian maya untuk meningkatkan prestasi. 4) Pengurusan negeri menggunakan useState atau ini. Kaedah kitaran hayat seperti ComponentDidMount digunakan untuk logik tertentu. 5) Penggunaan asas termasuk membuat komponen dan pengurusan negeri, dan penggunaan lanjutan melibatkan cangkuk tersuai dan pengoptimuman prestasi. 6) Kesalahan biasa termasuk kemas kini status yang tidak betul dan isu prestasi, kemahiran debugging termasuk menggunakan reactdevtools dan sangat baik

React adalah perpustakaan JavaScript untuk membina antara muka pengguna, dengan komponen terasnya dan pengurusan negeri. 1) Memudahkan pembangunan UI melalui komponen dan pengurusan negeri. 2) Prinsip kerja termasuk perdamaian dan rendering, dan pengoptimuman dapat dilaksanakan melalui React.Memo dan Usememo. 3) Penggunaan asas adalah untuk membuat dan membuat komponen, dan penggunaan lanjutan termasuk menggunakan cangkuk dan konteksapi. 4) Kesalahan biasa seperti kemas kini status yang tidak betul, anda boleh menggunakan ReactDevTools untuk debug. 5) Pengoptimuman prestasi termasuk menggunakan react.memo, senarai virtualisasi dan codesplitting, dan menyimpan kod yang boleh dibaca dan dikekalkan adalah amalan terbaik.

React menggabungkan JSX dan HTML untuk meningkatkan pengalaman pengguna. 1) JSX membenamkan HTML untuk menjadikan pembangunan lebih intuitif. 2) Mekanisme DOM maya mengoptimumkan prestasi dan mengurangkan operasi DOM. 3) UI pengurusan berasaskan komponen untuk meningkatkan kebolehkerjaan. 4) Pengurusan negeri dan pemprosesan acara meningkatkan interaktiviti.

Komponen React boleh ditakrifkan oleh fungsi atau kelas, merangkumi logik UI dan menerima data input melalui prop. 1) Tentukan komponen: Gunakan fungsi atau kelas untuk mengembalikan elemen bertindak balas. 2) Rendering Component: React Call Render Kaedah atau Melaksanakan Komponen Fungsi. 3) Komponen multiplexing: Lulus data melalui prop untuk membina UI yang kompleks. Pendekatan kitaran hayat komponen membolehkan logik dilaksanakan pada peringkat yang berbeza, meningkatkan kecekapan pembangunan dan pemeliharaan kod.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver CS6
Alat pembangunan web visual

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