Blog ini pada asalnya disiarkan di Medium
Hai, rakan-rakan peminat React! Saya baru-baru ini menyelami dokumentasi React dan ingin berkongsi pembelajaran saya dengan anda. Ini adalah panduan minima ringkas untuk mereka yang ingin membina asas yang kukuh dalam React. Mari kita pecahkan konsep teras dengan penerangan ringkas dan coretan kod.
Ini akan menjadi cerita yang agak panjang, tetapi sila teruskan untuk memahami semua konsep teras React sekaligus. Anda akan mendapati berfaedah untuk meringkas dan menyemak semula konsep ini untuk kemajuan selanjutnya.
React adalah tentang memecahkan UI anda kepada komponen yang boleh diguna semula. Apabila membina apl React, mulakan dengan:
Rujukan: https://react.dev/learn/thinking-in-react
Komponen ialah blok bangunan aplikasi React. Ia boleh berfungsi atau berasaskan kelas (kuno, tidak disyorkan). JSX ialah sambungan sintaks yang membolehkan anda menulis kod seperti HTML dalam JavaScript anda.
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
Rujukan:
Props ialah cara kami menghantar data daripada komponen induk kepada anak. Ia adalah baca sahaja dan membantu memastikan komponen kami tulen.
function Greeting(props) { return <p>Welcome, {props.username}!</p>; } // Usage <Greeting username="Alice" />
Rujukan: https://react.dev/learn/passing-props-to-a-component
React membolehkan anda membuat komponen atau elemen secara bersyarat berdasarkan syarat tertentu.
function UserGreeting(props) { return props.isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign in.</h1>; }
Rujukan: https://react.dev/learn/conditional-rendering
Gunakan fungsi map() untuk memaparkan senarai elemen dalam React. Jangan lupa tambahkan prop kunci unik pada setiap item.
function FruitList(props) { const fruits = props.fruits; return ( <ul> {fruits.map((fruit) => ( <li key={fruit.id}>{fruit.name}</li> ))} </ul> ); }
Rujukan: https://react.dev/learn/rendering-lists
Komponen tulen sentiasa menghasilkan output yang sama untuk prop dan keadaan yang sama. Ia boleh diramal dan lebih mudah untuk diuji.
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
Rujukan: https://react.dev/learn/keeping-components-pure
React membina dan mengekalkan perwakilan dalaman UI anda yang dipanggil DOM maya. Ini membolehkan React mengemas kini hanya bahagian DOM sebenar yang telah berubah dengan cekap.
Rujukan: https://react.dev/learn/understanding-your-ui-as-a-tree
React menggunakan peristiwa sintetik untuk mengendalikan interaksi pengguna secara konsisten merentas penyemak imbas yang berbeza.
function Greeting(props) { return <p>Welcome, {props.username}!</p>; } // Usage <Greeting username="Alice" />
Rujukan: https://react.dev/learn/responding-to-events
Keadaan digunakan untuk data yang berubah dari semasa ke semasa dalam komponen. Gunakan cangkuk useState untuk menambah keadaan pada komponen berfungsi.
function UserGreeting(props) { return props.isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign in.</h1>; }
Rujukan: https://react.dev/learn/state-a-components-memory
Komponen terkawal mempunyai keadaannya dikawal oleh React.
function FruitList(props) { const fruits = props.fruits; return ( <ul> {fruits.map((fruit) => ( <li key={fruit.id}>{fruit.name}</li> ))} </ul> ); }
Komponen tidak terkawal mengurus keadaannya terus pada DOM.
function PureComponent(props) { return <div>{props.value}</div>; }
Ruj menyediakan cara untuk mengakses nod DOM atau elemen React yang dibuat dalam kaedah pemaparan.
function Button() { const handleClick = () => { alert('Button clicked!'); }; return <button onClick={handleClick}>Click me</button>; }
Gunakan preventDefault() untuk menghentikan gelagat penyemak imbas lalai untuk acara tertentu.
import React, { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}>Click me</button> </div> ); }
Peristiwa tindak balas disebarkan sama seperti acara DOM asli. Anda boleh menggunakan stopPropagation() untuk mengelakkan acara menggelegak.
function ControlledInput() { const [value, setValue] = useState(''); return <input value={value} onChange={e => setValue(e.target.value)} />; }
Pertimbangkan untuk menggunakan cangkuk useReducer atau pustaka pengurusan keadaan seperti Redux atau Zustand untuk logik keadaan yang kompleks.
function UncontrolledInput() { return <input defaultValue="Hello" />; }
Konteks menyediakan cara untuk menghantar data melalui pepohon komponen tanpa perlu menurunkan props secara manual di setiap peringkat.
import React, { useRef } from 'react'; function TextInputWithFocusButton() { const inputEl = useRef(null); const onButtonClick = () => { inputEl.current.focus(); }; return ( <> <input ref={inputEl} type="text" /> <button onClick={onButtonClick}>Focus the input</button> </> ); }
Rujukan: https://react.dev/learn/passing-data-deeply-with-context
Kesan sampingan ialah operasi yang mempengaruhi sesuatu di luar skop fungsi yang sedang dilaksanakan, seperti pengambilan data atau manipulasi DOM. Gunakan cangkuk useEffect untuk menguruskan kesan sampingan.
function Form() { const handleSubmit = (e) => { e.preventDefault(); console.log('Form submitted'); }; return <form onSubmit={handleSubmit}>...</form>; }
function Parent() { return ( <div onClick={() => console.log('Parent clicked')}> <Child /> </div> ); } function Child() { const handleClick = (e) => { e.stopPropagation(); console.log('Child clicked'); }; return <button onClick={handleClick}>Click me</button>; }
Rujukan:
Rujukan: https://react.dev/reference/rules
Cakuk tersuai membolehkan anda mengekstrak logik komponen ke dalam fungsi boleh guna semula.
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
Rujukan: https://react.dev/reference/rules/rules-of-hooks
Itulah penutup dalam perjalanan React kami! Ingat, cara terbaik untuk belajar adalah dengan melakukan. Mula membina projek, bereksperimen dengan konsep ini dan jangan takut untuk menyelami dokumentasi React apabila anda memerlukan butiran lanjut. Selamat mengekod!
Atas ialah kandungan terperinci Ambilan Utama daripada Ulasan Terkini Saya tentang React Docs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!