Komponen adalah blok bangunan asas bagi sebarang aplikasi React. Mereka boleh digunakan semula kod yang mewakili sebahagian daripada antara muka pengguna. Setiap komponen boleh dianggap sebagai modul mandiri yang menguruskan negara sendiri dan menjadikan UI sendiri. Komponen dalam React boleh sama ada berfungsi atau berasaskan kelas, walaupun dengan kemunculan cangkuk, komponen berfungsi lebih biasa digunakan kerana kesederhanaan dan kebolehbacaan mereka.
Komponen boleh menerima data melalui prop, yang merupakan input kepada komponen yang boleh menjejaskan bagaimana ia diberikan. Mereka juga boleh mengekalkan keadaan dalaman mereka sendiri, membolehkan mereka bertindak balas terhadap interaksi pengguna dan mengemas kini UI dengan sewajarnya. Komponen React boleh disusun bersama untuk membina UI yang kompleks dan interaktif, menjadikannya alat yang berkuasa untuk membina aplikasi web moden.
Komponen fungsional dan kelas dalam React berfungsi dengan tujuan yang sama untuk mengemas dan menjadikan unsur -unsur UI, tetapi mereka berbeza dalam sintaks dan keupayaan, terutamanya dalam versi awal React.
Komponen Fungsian:
Contoh komponen fungsional yang mudah:
<code class="jsx">function Welcome(props) { return <h1>Hello, {props.name}</h1>; }</code>
Komponen Kelas:
React.Component
.componentDidMount
, componentDidUpdate
, dan componentWillUnmount
.Contoh komponen kelas yang mudah:
<code class="jsx">class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code>
Dalam perkembangan reaksi moden, komponen berfungsi dengan cangkuk lebih disukai kerana kesederhanaan mereka dan keupayaan untuk menggunakan logik yang mudah digunakan semula antara komponen.
Lulus data antara komponen dalam React dapat dicapai dalam beberapa cara, bergantung kepada hubungan antara komponen (komponen ibu bapa, anak-anak, atau adik beradik).
1. Ibu bapa kepada Anak: Props
Kaedah yang paling biasa untuk lulus data dari ibu bapa ke komponen kanak -kanak adalah dengan menggunakan prop. Props adalah data baca sahaja yang diluluskan dari komponen induk kepada komponen anaknya.
Contoh:
<code class="jsx">function Parent() { const name = 'John'; return <child name="{name}"></child>; } function Child(props) { return <p>Hello, {props.name}!</p>; }</code>
2. Anak kepada Ibu Bapa: Panggilan balik
Untuk lulus data dari kanak -kanak ke komponen induk, anda boleh lulus fungsi panggil balik sebagai prop kepada komponen kanak -kanak. Komponen kanak -kanak kemudian boleh memanggil fungsi ini, lulus data yang diperlukan kembali kepada ibu bapa.
Contoh:
<code class="jsx">function Parent() { const handleNameChange = (newName) => { console.log(newName); }; return <child onnamechange="{handleNameChange}"></child>; } function Child(props) { const name = 'Jane'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; }</code>
3. Antara adik beradik: mengangkat keadaan
Sekiranya anda perlu berkongsi data antara komponen saudara, anda boleh mengangkat keadaan sehingga komponen ibu bapa yang paling dekat. Komponen induk kemudian boleh menguruskan negeri dan menyampaikannya sebagai alat untuk komponen kanak -kanak.
Contoh:
<code class="jsx">function Parent() { const [name, setName] = useState(''); const handleNameChange = (newName) => { setName(newName); }; return ( <div> <child1 name="{name}" onnamechange="{handleNameChange}"></child1> <child2 name="{name}"></child2> </div> ); } function Child1(props) { const name = 'John'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; } function Child2(props) { return <p>Hello, {props.name}!</p>; }</code>
Menguruskan keadaan dengan berkesan adalah penting untuk membina aplikasi reaksi yang mantap dan cekap. Berikut adalah beberapa amalan terbaik untuk pengurusan negeri dalam komponen React:
1. Gunakan cangkuk useState
untuk Negeri Tempatan:
Untuk komponen berfungsi, gunakan cangkuk useState
untuk menguruskan negara tempatan. Pendekatan ini menjadikan komponen anda mudah dan memberi tumpuan kepada logik UI mereka.
Contoh:
<code class="jsx">function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onclick="{()"> setCount(count 1)}>Click me</button> </div> ); }</code>
2. Angkat keadaan apabila diperlukan:
Jika pelbagai komponen perlu berkongsi keadaan yang sama, angkat negara ke ibu bapa yang paling dekat. Ini membantu mengelakkan penggerudian prop dan mengekalkan pembersih hierarki komponen anda.
3. Gunakan API Konteks untuk Negeri Global:
Untuk keadaan yang perlu diakses oleh banyak komponen sepanjang aplikasi anda, pertimbangkan untuk menggunakan API konteks. Ia menyediakan cara untuk menyampaikan data melalui pokok komponen tanpa perlu lulus props secara manual di setiap peringkat.
Contoh:
<code class="jsx">const ThemeContext = React.createContext('light'); function App() { return ( <themecontext.provider value="dark"> <toolbar></toolbar> </themecontext.provider> ); } function Toolbar() { return ( <div> <themedbutton></themedbutton> </div> ); } function ThemedButton() { const theme = useContext(ThemeContext); return <button style="{{" background: theme="==" :>I am styled by theme context!</button>; }</code>
4. Gunakan Redux atau perpustakaan pengurusan negeri lain untuk aplikasi yang kompleks:
Untuk aplikasi yang lebih besar dengan keperluan pengurusan negeri yang kompleks, pertimbangkan untuk menggunakan perpustakaan seperti Redux. Redux menyediakan kedai berpusat untuk keadaan aplikasi anda dan satu set peraturan yang boleh diramal untuk mengemas kini keadaan itu.
5. Pastikan kemas kini keadaan tidak berubah:
Apabila mengemas kini keadaan, sentiasa mengembalikan objek negeri baru dan bukannya bermutasi yang sedia ada. Ini membantu bertindak balas dengan cekap membuat komponen dan meningkatkan prestasi.
Contoh:
<code class="jsx">// Incorrect: Mutating state const [user, setUser] = useState({ name: 'John', age: 30 }); user.age = 31; // Don't do this! // Correct: Returning a new state object setUser(prevUser => ({ ...prevUser, age: 31 }));</code>
6. Gunakan Memoisasi untuk mengoptimumkan prestasi:
Gunakan cangkuk useMemo
dan useCallback
untuk memoize pengiraan mahal dan fungsi panggil balik, menghalang komponen-komponen yang tidak perlu.
Contoh:
<code class="jsx">const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);</code>
Dengan mengikuti amalan terbaik ini, anda dapat mengurus keadaan secara berkesan dalam komponen React anda, menghasilkan aplikasi yang lebih banyak dan berpengalaman.
Atas ialah kandungan terperinci Apakah komponen dalam React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!