Rumah >hujung hadapan web >tutorial js >Bekerja dengan Borang dalam React

Bekerja dengan Borang dalam React

Lisa Kudrow
Lisa Kudrowasal
2025-02-10 09:29:09948semak imbas

Working with Forms in React

Mengendalikan input pengguna adalah asas kepada hampir semua aplikasi, dan dalam dunia pembangunan web, borang HTML adalah alat standard untuk tugas ini. Jika anda baru bertindak balas, mengintegrasikan borang mungkin kelihatan menakutkan. Artikel ini memberikan panduan yang jelas dan ringkas untuk bekerja dengan bentuk dalam React, yang meliputi kedua -dua teknik asas dan canggih.

Konsep Utama

  • Input yang tidak terkawal: Ini adalah pendekatan yang paling mudah. React tidak menjejaki keadaan input; Sebaliknya, anda terus mengakses nilai dari elemen DOM semasa penyerahan. Ini sesuai untuk bentuk yang sangat mudah. ​​
  • Input terkawal: React menguruskan keadaan input. Ini menawarkan kawalan yang lebih baik, membolehkan pengesahan masa nyata, pemformatan, rendering bersyarat, dan penjanaan input dinamik. Ini adalah pendekatan yang disyorkan untuk kebanyakan senario.
  • Pengesahan masa nyata: Komponen terkawal membolehkan maklum balas segera mengenai kesahihan input sebagai jenis pengguna, meningkatkan pengalaman pengguna.
  • Perpustakaan pihak ketiga: perpustakaan seperti Pengurusan Borang Segar Segar, terutamanya untuk bentuk kompleks, mengurangkan kod boilerplate.

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 masa nyata: memberikan maklum balas segera mengenai ketepatan input.
  • pemformatan input: Memohon pemformatan (mis., Mata wang, nombor telefon) secara dinamik.
  • rendering bersyarat: menunjukkan/menyembunyikan elemen berdasarkan nilai input.
  • Generasi Input Dinamik: Tambah input berdasarkan interaksi pengguna.

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!

Kenyataan:
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