Rumah >hujung hadapan web >tutorial js >Bekerja dengan Borang dalam React
Konsep Utama
Input yang tidak terkawal: Pendekatan Asas
Input tidak terkawal Leverage Refs untuk mengakses nod DOM yang mendasari. Begini bagaimana ia kelihatan dalam komponen berfungsi:
<code class="language-javascript">function SimpleForm() { const nameEl = React.useRef(null); const handleSubmit = (e) => { e.preventDefault(); alert(nameEl.current.value); }; return ( <form onsubmit="{handleSubmit}"> <label htmlfor="name">Name:</label> <input type="text" ref="{nameEl}" id="name"> <button type="submit">Submit</button> </form> ); }</code>untuk komponen kelas,
digunakan dalam pembina. Sementara input yang tidak terkawal, tidak mempunyai ciri -ciri rakan -rakan terkawal mereka. React.createRef()
Contoh: borang log masuk (tidak terkawal)
<code class="language-javascript">function LoginForm() { // ... (refs for username, password, rememberMe) ... const handleSubmit = (e) => { e.preventDefault(); const data = { username: nameEl.current.value, password: passwordEl.current.value, rememberMe: rememberMeEl.current.checked, }; // ... (submit data) ... }; return ( <form onsubmit="{handleSubmit}"> {/* ... (input fields) ... */} </form> ); }</code>Keterbatasan input yang tidak terkawal menjadi jelas apabila memerlukan pengesahan masa nyata atau tingkah laku bentuk dinamik.
input terkawal: Kawalan yang dipertingkatkan
Input terkawal mengekalkan keadaan dalam komponen React. Perubahan kepada kemas kini input keadaan, dan perubahan keadaan mengemas kini input.
<code class="language-javascript">class ControlledInput extends React.Component { constructor(props) { super(props); this.state = { name: '' }; } handleInput = (event) => { this.setState({ name: event.target.value }); }; render() { return ( <input type="text" value="{this.state.name}" onchange="{this.handleInput}"> ); } }</code>aliran data bulat ini menyediakan kuasa untuk melaksanakan:
Pengesahan: Maklum balas masa nyata
Input terkawal membolehkan pengesahan berterusan. Berikut adalah contoh pengesahan kad kredit yang mudah (menggunakan fungsi hipotesis
validateCreditCard
<code class="language-javascript">function CreditCardForm() { // ... (state for card number and error message) ... const handleCardNumber = (e) => { const value = e.target.value; const isValid = validateCreditCard(value); // Hypothetical validation function this.setState({ cardNumber: value, cardError: !isValid }); }; return ( <form> <input type="text" value="{this.state.cardNumber}" onchange="{this.handleCardNumber}"> {this.state.cardError && <span>Invalid credit card number</span>} </form> ); }</code>Perpustakaan Borang: Pembangunan Streamlining
perpustakaan seperti segar dengan ketara mengurangkan boilerplate. Inilah contoh mudah:
<code class="language-javascript">function SimpleForm() { const nameEl = React.useRef(null); const handleSubmit = (e) => { e.preventDefault(); alert(nameEl.current.value); }; return ( <form onsubmit="{handleSubmit}"> <label htmlfor="name">Name:</label> <input type="text" ref="{nameEl}" id="name"> <button type="submit">Submit</button> </form> ); }</code>
Perpustakaan ini mengendalikan pengurusan negeri, pengesahan, dan penyerahan, menjadikan pembangunan lebih cekap.
Kesimpulan
Memahami input terkawal dan tidak terkawal adalah penting untuk pengendalian bentuk yang berkesan dalam React. Walaupun input yang tidak terkawal sesuai untuk senario mudah, input terkawal memberikan fleksibiliti dan kuasa yang diperlukan untuk kebanyakan aplikasi. Pertimbangkan menggunakan perpustakaan borang untuk menyelaraskan pembangunan untuk bentuk yang kompleks. Ingatlah untuk mengutamakan pengalaman pengguna melalui maklum balas dan pengendalian ralat yang jelas.
Atas ialah kandungan terperinci Bekerja dengan Borang dalam React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!