Rumah hujung hadapan web tutorial js Tutorial pengenalan untuk mempelajari sintaks JSX dalam rangka kerja React_Pengetahuan Asas JavaScript

Tutorial pengenalan untuk mempelajari sintaks JSX dalam rangka kerja React_Pengetahuan Asas JavaScript

May 16, 2016 pm 03:12 PM
javascript js jsx react

Apakah JSX?

Apabila menulis komponen dengan React, sintaks JSX biasanya digunakan Pada pandangan pertama, ia kelihatan seperti teg XML ditulis secara langsung dalam kod Javascript, ini hanyalah gula sintaks Setiap teg XML akan menjadi alat penukaran menukarnya kepada kod Javascript tulen Sudah tentu, anda juga boleh menulisnya secara langsung dalam kod Javascript tulen Namun, dengan menggunakan JSX, struktur komponen dan hubungan antara komponen akan kelihatan lebih jelas.

1

2

3

var MyComponent = React.createClass({/*...*/});

var myElement = <MyComponent someProperty={true} />;

React.render(myElement, document.body);

Salin selepas log masuk

Apakah teg XML, seperti akan ditukar menjadi oleh alat penukaran JSX?

Contohnya:

1

2

var Nav = React.createClass({/*...*/});

var app = <Nav color="blue"><Profile>click</Profile></Nav>;

Salin selepas log masuk

akan ditukar kepada:

1

2

3

4

5

6

var Nav = React.createClass({/*...*/});

var app = React.createElement(

 Nav,

 {color:"blue"},

 React.createElement(Profile, null, "click")

);

Salin selepas log masuk

Dalam erti kata lain, apabila kami menulis teg XML, kami pada asasnya memanggil kaedah React.createElement dan mengembalikan objek ReactElement.

1

2

3

4

5

ReactElement createElement(

 string/ReactClass type,

 [object props],

 [children ...]

)

Salin selepas log masuk

Parameter pertama kaedah ini boleh menjadi rentetan, yang mewakili elemen dalam standard HTML, atau objek jenis ReactClass, yang mewakili komponen tersuai yang telah kami rangkumkan sebelum ini. Parameter kedua ialah objek, atau kamus, yang menyimpan semua atribut yang wujud bagi elemen ini (iaitu, nilai yang pada dasarnya tidak berubah selepas dihantar masuk). Bermula dengan parameter ketiga, semua parameter berikutnya dianggap sebagai elemen anak elemen.

Penukar JSX

Terdapat banyak cara untuk menukar kod dengan sintaks JSX kepada kod Javascript tulen Untuk kod sebaris dan HTML atau fail luaran yang belum ditukar, taip="teks" mesti ditambahkan pada teg skrip /jsx fail JSXTransformer.js Walau bagaimanapun, kaedah ini tidak disyorkan untuk digunakan dalam persekitaran pengeluaran Kaedah yang disyorkan adalah untuk menukar kod sebelum ia masuk dalam talian. Anda boleh menggunakan npm untuk memasang react-tools secara global:

1

npm install -g react-tools

Salin selepas log masuk

Dan gunakan alat baris arahan untuk menukar (untuk penggunaan khusus, sila rujuk jsx -h):

1

jsx src/ build/

Salin selepas log masuk

Jika anda menggunakan alat automasi, seperti gulp, anda boleh menggunakan plug-in gulp-react yang sepadan.

Menggunakan JS dalam templat HTML

Sangat mudah untuk menggunakan JS dalam templat HTML Anda hanya perlu menggunakan kurungan kerinting untuk mengelilingi kod JS.

1

2

3

4

5

6

7

8

9

10

11

12

var names = ['Alice', 'Emily', 'Kate'];

  

React.render(

<div>

{

names.map(function (name) {

return <div>Hello, {name}!</div>

})

}

</div>,

document.getElementById('example')

);

Salin selepas log masuk

Apabila disusun ia menjadi seperti ini:

1

2

3

4

5

6

7

var names = ['Alice', 'Emily', 'Kate'];

React.render(

 React.createElement("div", null, names.map(function (name) {

 return React.createElement("div", null, "Hello, ", name, "!")

 }) ),

 document.getElementById('example')

);

Salin selepas log masuk

Perlu diambil perhatian bahawa pendakap kerinting sebenarnya merupakan ungkapan keluaran berubah-ubah akhirnya secara langsung meneruskan kandungan dalam pendakap kerinting sebagai parameter ketiga React.createElement (dilalui secara langsung tanpa sebarang pengubahsuaian). of expression boleh diletakkan di dalamnya, dan sebarang cara penulisan yang tidak boleh digunakan secara langsung sebagai parameter ketiga adalah salah, jadi adalah salah untuk anda menulis seperti ini:

1

2

3

4

5

6

7

8

9

10

11

React.render(

<div>

{

var a = 1;

names.map(function (name) {

return <div>Hello, {name}!</div>

})

}

</div>,

document.getElementById('example')

);

Salin selepas log masuk

Kerana jelas bahawa kandungan dalam pendakap kerinting diletakkan terus pada parameter ketiga, dan sintaksnya tidak betul.

Ini juga salah untuk menulis:

1

2

3

4

5

6

7

8

9

React.render(

<div>

{

var a = 1;

  

}

</div>,

document.getElementById('example')

);

Salin selepas log masuk

Kerana React.createElement(“div”, null, var a = 1;) ialah ralat sintaks.
Kemudian anda juga boleh memahami mengapa ungkapan js dalam kurungan kerinting tidak boleh berakhir dengan koma bertitik.

Perlu diambil perhatian bahawa jika anda mengeluarkan pembolehubah JS dalam atribut, anda tidak boleh menambah petikan, jika tidak, ia akan dianggap sebagai rentetan dan tidak dihuraikan.
Ia sepatutnya kelihatan seperti ini:

1

<a title={title}>链接</a>

Salin selepas log masuk

Gunakan teg HTML

Untuk mencipta elemen yang wujud dalam standard HTML, cuma tulis kod HTML terus:

1

2

var myDivElement = <div className="foo" />;

React.render(myDivElement, document.body);

Salin selepas log masuk

Walau bagaimanapun, perlu diingatkan bahawa kedua-dua atribut kelas dan untuk, sintaks JSX akhirnya akan ditukar kepada Javascript tulen, jadi className dan htmlFor mesti digunakan sama seperti dalam Javascript DOM.

Perkara lain ialah apabila mencipta elemen dalam standard HTML, penukar JSX akan membuang atribut bukan standard tersebut. Jika anda mesti menambah atribut tersuai, anda perlu menambah awalan data sebelum atribut tersuai ini.

1

<div data-custom-attribute="foo" />

Salin selepas log masuk

Komponen ruang nama

Sebagai contoh, apabila membangunkan komponen, komponen mempunyai berbilang subkomponen Jika anda mahu subkomponen ini digunakan sebagai atribut komponen induknya, anda boleh menggunakannya seperti ini:

1

2

3

4

5

6

7

8

9

10

var Form = MyFormComponent;

 

var App = (

 <Form>

 <Form.Row>

  <Form.Label />

  <Form.Input />

 </Form.Row>

 </Form>

);

Salin selepas log masuk

Dengan cara ini anda hanya perlu menetapkan ReactClass komponen anak sebagai harta komponen induknya:

1

2

3

4

5

var MyFormComponent = React.createClass({ ... });

 

MyFormComponent.Row = React.createClass({ ... });

MyFormComponent.Label = React.createClass({ ... });

MyFormComponent.Input = React.createClass({ ... });

Salin selepas log masuk

Penciptaan elemen kanak-kanak boleh diserahkan terus kepada penukar JSX:

1

2

3

4

5

6

7

8

var App = (

 React.createElement(Form, null,

  React.createElement(Form.Row, null,

   React.createElement(Form.Label, null),

   React.createElement(Form.Input, null)

  )

 )

);

Salin selepas log masuk

Ciri ini memerlukan versi 0.11 dan ke atas

Ekspresi JavaScript

Untuk menulis ungkapan Javascript dalam sintaks JSX, anda hanya perlu menggunakan {}, seperti contoh berikut menggunakan operator ternary:

1

2

3

4

5

6

7

8

// Input (JSX):

var content = <Container>{window.isLoggedIn &#63; <Nav /> : <Login />}</Container>;

// Output (JS):

var content = React.createElement(

 Container,

 null,

 window.isLoggedIn &#63; React.createElement(Nav) : React.createElement(Login)

);

Salin selepas log masuk

Walau bagaimanapun, perlu diingatkan bahawa sintaks JSX hanyalah gula sintaksis di belakangnya memanggil kaedah pembina ReactElement React.createElement, jadi penulisan seperti ini tidak dibenarkan:

1

2

3

4

5

// This JSX:

<div id={if (condition) { 'msg' }}>Hello World!</div>

 

// Is transformed to this JS:

React.createElement("div", {id: if (condition) { 'msg' }}, "Hello World!");

Salin selepas log masuk

Anda boleh melihat ralat sintaks yang jelas dalam kod Javascript yang ditukar, jadi sama ada gunakan operator ternary atau tulis seperti ini:

1

2

if (condition) <div id='msg'>Hello World!</div>

else <div>Hello World!</div>

Salin selepas log masuk

传播属性(Spread Attributes)

在JSX中,可以使用...运算符,表示将一个对象的键值对与ReactElement的props属性合并,这个...运算符的实现类似于ES6 Array中的...运算符的特性。

1

2

var props = { foo: x, bar: y };

var component = <Component { ...props } />;

Salin selepas log masuk

这样就相当于:

1

var component = <Component foo={x} bar={y} />

Salin selepas log masuk

它也可以和普通的XML属性混合使用,需要同名属性,后者将覆盖前者:

1

2

3

var props = { foo: 'default' };

var component = <Component {...props} foo={'override'} />;

console.log(component.props.foo); // 'override'

Salin selepas log masuk

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

PHP, Vue dan React: Bagaimana untuk memilih rangka kerja bahagian hadapan yang paling sesuai? PHP, Vue dan React: Bagaimana untuk memilih rangka kerja bahagian hadapan yang paling sesuai? Mar 15, 2024 pm 05:48 PM

PHP, Vue dan React: Bagaimana untuk memilih rangka kerja bahagian hadapan yang paling sesuai? Dengan pembangunan berterusan teknologi Internet, rangka kerja bahagian hadapan memainkan peranan penting dalam pembangunan Web. PHP, Vue dan React ialah tiga rangka kerja bahagian hadapan yang mewakili, masing-masing mempunyai ciri dan kelebihan tersendiri. Apabila memilih rangka kerja bahagian hadapan yang hendak digunakan, pembangun perlu membuat keputusan termaklum berdasarkan keperluan projek, kemahiran pasukan dan pilihan peribadi. Artikel ini akan membandingkan ciri dan penggunaan tiga rangka kerja bahagian hadapan PHP, Vue dan React.

Penyepaduan rangka kerja Java dan rangka kerja React bahagian hadapan Penyepaduan rangka kerja Java dan rangka kerja React bahagian hadapan Jun 01, 2024 pm 03:16 PM

Penyepaduan rangka kerja Java dan rangka kerja React: Langkah: Sediakan rangka kerja Java bahagian belakang. Buat struktur projek. Konfigurasikan alat binaan. Buat aplikasi React. Tulis titik akhir REST API. Konfigurasikan mekanisme komunikasi. Kes praktikal (SpringBoot+React): Kod Java: Tentukan pengawal RESTfulAPI. Kod tindak balas: Dapatkan dan paparkan data yang dikembalikan oleh API.

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Hubungan antara js dan vue Hubungan antara js dan vue Mar 11, 2024 pm 05:21 PM

Hubungan antara js dan vue: 1. JS sebagai asas pembangunan Web; 2. Kebangkitan Vue.js sebagai rangka kerja hadapan 3. Hubungan pelengkap antara JS dan Vue; Vue.

Vue.js vs React: Pertimbangan khusus projek Vue.js vs React: Pertimbangan khusus projek Apr 09, 2025 am 12:01 AM

Vue.js sesuai untuk projek kecil dan sederhana dan lelaran yang cepat, sementara React sesuai untuk aplikasi besar dan kompleks. 1) Vue.js mudah digunakan dan sesuai untuk situasi di mana pasukan tidak mencukupi atau skala projek kecil. 2) React mempunyai ekosistem yang lebih kaya dan sesuai untuk projek dengan prestasi tinggi dan keperluan fungsional yang kompleks.

js untuk memuat semula halaman semasa js untuk memuat semula halaman semasa Jan 24, 2024 pm 03:58 PM

js kaedah untuk menyegarkan halaman semasa: 1. location.reload(); 2. location.href; Pengenalan terperinci: 1. location.reload(), gunakan kaedah location.reload() untuk memuat semula halaman semasa; 2. location.href, anda boleh memuat semula halaman semasa dengan menetapkan atribut location.href, dsb.

Perbezaan antara __proto__ dan prototaip dalam JS Perbezaan antara __proto__ dan prototaip dalam JS Feb 19, 2024 pm 01:38 PM

__proto__ dan prototaip ialah dua atribut yang berkaitan dengan prototaip dalam JS Mereka mempunyai fungsi yang sedikit berbeza. Artikel ini akan memperkenalkan dan membandingkan perbezaan antara kedua-duanya secara terperinci, dan memberikan contoh kod yang sepadan. Pertama, mari kita fahami maksudnya dan untuk kegunaannya. proto__proto__ ialah sifat terbina dalam objek yang menunjuk kepada prototaip objek. Setiap objek mempunyai atribut __proto__, termasuk objek tersuai, objek terbina dalam dan objek fungsi. Oleh __proto__ genus

See all articles