Jadual Kandungan
1. Komponen terkawal: Cara Reaksi
2. Mengendalikan pelbagai input
3. Borang Penyerahan dan Pengesahan
4. Menguruskan kesilapan dan maklum balas
5. Menetapkan semula dan membentuk bentuk
6. Bilakah menggunakan perpustakaan (seperti Borang Hook React)
Petua akhir
Rumah hujung hadapan web Soal Jawab bahagian hadapan Panduan lengkap untuk membentuk pengendalian dalam reaksi

Panduan lengkap untuk membentuk pengendalian dalam reaksi

Jul 29, 2025 am 02:26 AM

Gunakan komponen terkawal dengan mengikat nilai input untuk bertindak balas dengan onchange untuk memastikan pengurusan negeri yang boleh diramal. 2. Mengendalikan pelbagai input dengan cekap dengan menggunakan objek negeri tunggal dan mengemas kini secara dinamik melalui atribut nama. 3. Hantar borang menggunakan Onsubmit dengan PencegahanDefault untuk mengelakkan memuat semula halaman dan melaksanakan pengesahan sama ada pada hantar atau dalam masa nyata. 4. Menguruskan kesilapan dengan menyimpannya dalam keadaan, mengesahkan input, dan memaparkan maklum balas pengguna secara kondusif. 5. Borang penetapan semula selepas penyerahan atau prefill mereka dengan data sedia ada dengan memulakan keadaan dari prop. 6. Mengadopsi perpustakaan seperti Borang Hook React untuk kes-kes penggunaan kompleks yang melibatkan prestasi, medan bersarang, atau pengesahan terbina dalam, yang mengurangkan semula dan memudahkan logik bentuk. Sentiasa mengesahkan, memberikan maklum balas yang jelas, dan skala pendekatan anda seperti yang diperlukan.

Panduan lengkap untuk membentuk pengendalian dalam reaksi

Borang pengendalian dalam React mungkin kelihatan mudah pada mulanya, tetapi apabila aplikasi anda berkembang, menguruskan keadaan, pengesahan, dan maklum balas pengguna dengan cekap menjadi penting. Tidak seperti bentuk HTML tradisional, React menggalakkan pendekatan yang lebih terkawal dan boleh diramal. Berikut adalah panduan praktikal untuk menguasai pengendalian bentuk dalam React - dari asas -asas kepada amalan terbaik.

Panduan lengkap untuk membentuk pengendalian dalam reaksi

1. Komponen terkawal: Cara Reaksi

Dalam React, komponen terkawal adalah standard untuk mengendalikan input bentuk. Ini bermakna data bentuk dikendalikan oleh keadaan React, bukan oleh DOM.

Daripada membiarkan input menguruskan nilai sendiri, anda mengikat value prop ke keadaan komponen dan mengemas kini melalui onChange .

Panduan lengkap untuk membentuk pengendalian dalam reaksi
 fungsi nama () {
  const [nama, setName] = useState ('');

  kembali (
    <form>
      <label>
        Nama:
        <input
          type = "Text"
          value = {name}
          onChange = {(e) => setName (e.target.value)}
        />
      </label>
      <p> hello, {name}! </p>
    </form>
  );
}

Mengapa ini penting:

  • Anda sentiasa mempunyai akses kepada nilai input semasa.
  • Mudah untuk melaksanakan pengesahan masa nyata atau pemformatan.
  • Membolehkan tingkah laku dinamik (contohnya, melumpuhkan butang berdasarkan input).

Petua: Sentiasa gunakan onChange untuk mengemas kini keadaan - jangan biarkan value tidak terkawal sebaik sahaja anda mula mengurusnya.

Panduan lengkap untuk membentuk pengendalian dalam reaksi

2. Mengendalikan pelbagai input

Apabila bentuk berkembang, anda akan mempunyai pelbagai bidang. Daripada menulis setter untuk setiap, gunakan objek negeri tunggal dan kemas kini secara dinamik.

 fungsi userForm () {
  const [formData, setFormData] = useState ({
    Nama: &#39;&#39;,
    E -mel: &#39;&#39;,
    Umur: &#39;&#39;,
  });

  const handlechange = (e) => {
    const {name, value} = e.Target;
    setFormData ((prev) => ({
      ... Sebelumnya,
      [Nama]: Nilai,
    }));
  };

  kembali (
    <form>
      <input name = "name" value = {formdata.name} onChange = {handlechange} placeholder = "name" />
      <input name = "email" value = {formData.email} onChange = {handlechange} placeholder = "email" />
      <input name = "usia" nilai = {formdata.age} onChange = {handlechange} placeholder = "usia" />
    </form>
  );
}

Mata Utama:

  • Gunakan atribut name untuk mengenal pasti medan mana yang berubah.
  • Sebarkan keadaan sebelumnya untuk memelihara bidang lain.
  • Bekerja hebat untuk teks, e -mel, nombor, dan juga kotak pilihan dengan tweak kecil.

Untuk kotak semak:

 <input
  type = "ceckbox"
  Nama = "Langgan"
  diperiksa = {formData.Subscribe}
  onChange = {(e) => setFormData (prev => ({... prev, langgan: e.target.checked})}
/>

3. Borang Penyerahan dan Pengesahan

Gunakan pengendali onSubmit untuk memproses data borang. Cegah Muat semula Halaman Lalai dengan preventDefault() .

 const handlesubmit = (e) => {
  E.PreventDefault ();

  // Pengesahan asas
  jika (! formdata.name ||! formdata.email) {
    amaran (&#39;sila isi semua bidang&#39;);
    kembali;
  }

  console.log (&#39;borang yang dikemukakan:&#39;, formdata);
  // Hantar ke API, borang tetapkan semula, dll.
};

Tambahnya ke borang anda:

 <form onSubmit = {handlesubmit}>
  {/ * input */}
  <Button Type = "Hantar"> Hantar </butang>
</form>

Strategi Pengesahan Biasa:

  • Pemeriksaan sebaris: Sahkan pada hantar (mudah, baik untuk permulaan).
  • Pengesahan masa nyata: Tunjukkan kesilapan sebagai jenis pengguna.
  • CHONCE CHOICK: Ekstrak Logik Seperti useForm untuk kebolehgunaan semula.

4. Menguruskan kesilapan dan maklum balas

Tunjukkan pengguna apa yang salah. Simpan kesilapan dalam keadaan dan paparkannya secara kondusif.

 const [ralat, setErrors] = useState ({});

const validate = () => {
  const NewErrors = {};
  jika (! formdata.name) newerrors.name = &#39;Nama diperlukan&#39;;
  jika (! formdata.email) {
    newerrors.email = &#39;E -mel diperlukan&#39;;
  } else if (! /\ s @\ s \. \ s /.test(formData.email)) {
    newerrors.email = &#39;E -mel tidak sah&#39;;
  }
  kembali NewErrors;
};

const handlesubmit = (e) => {
  E.PreventDefault ();
  const NewErrors = validate ();
  jika (object.keys (NewErrors) .length> 0) {
    setErrors (NewErrors);
  } else {
    setErrors ({});
    console.log (&#39;Borang sah:&#39;, formdata);
  }
};

Di JSX:

 {errors.name && <p style = {{color: &#39;red&#39;}}> {errors.name} </p>}
<input name = "name" value = {formData.name} onChange = {HandLechange} />

5. Menetapkan semula dan membentuk bentuk

Selepas diserahkan, anda mungkin mahu membersihkan borang:

 setFormData ({name: &#39;&#39;, e -mel: &#39;&#39;, umur: &#39;&#39;});

Atau menetapkan semula ke nilai lalai menggunakan fungsi reset :

 const handlereset = () => {
  setFormData ({name: &#39;&#39;, e -mel: &#39;&#39;, umur: &#39;&#39;});
  setErrors ({});
};

Untuk mengedit data sedia ada, memulakan keadaan dengan alat peraga:

 fungsi editUserForm ({user}) {
  const [formData, setFormData] = useState (pengguna); // prefill
  // ...
}

6. Bilakah menggunakan perpustakaan (seperti Borang Hook React)

Untuk bentuk kompleks (medan dinamik, data bersarang, pengesahan async), pertimbangkan perpustakaan.

Borang Hook React popular kerana ia:

  • Mengurangkan semula semula dengan menggunakan input yang tidak terkawal dengan ref.
  • Mengintegrasikan dengan perpustakaan pengesahan (YUP, ZOD).
  • Memudahkan pengendalian array medan (contohnya, pelbagai alamat).

Contoh dengan Borang Hook React:

 import {useForm} dari &#39;react-hook-form&#39;;

fungsi hookform () {
  const {register, handlesubmit, formState: {errors}} = useForm ();

  const onsubmit = (data) => {
    console.log (data);
  };

  kembali (
    <form onSubmit = {handlesubmit (onsubmit)}>
      <input {... daftar ("nama", {diperlukan: true})} />
      {errors.name && <p> Nama diperlukan </p>}

      <input {... daftar ("e -mel", {diperlukan: benar, corak: /^\ s @\ s $ /i})} />
      {errors.email && <p> e -mel tidak sah </p>}

      <Button Type = "Hantar"> Hantar </butang>
    </form>
  );
}

Gunakannya bila:

  • Anda mempunyai bentuk yang besar atau kompleks.
  • Prestasi adalah kebimbangan (lebih sedikit penahan semula).
  • Anda mahukan pengesahan dan pengendalian ralat terbina dalam.

Petua akhir

  • Sentiasa gunakan type="button" vs type="submit" - Butang di dalam bentuk lalai untuk submit , yang boleh mencetuskan penyerahan yang tidak diinginkan.
  • Gunakan disabled pada butang Hantar semasa panggilan API untuk mengelakkan penyerahan dua kali.
  • Kesalahan jelas mengenai perubahan input jika anda mahukan pengalaman ralat "hilang".
  • Perkara-perkara kebolehcapaian: Gunakan label yang betul, aria-invalid , dan pemesejan ralat.

Pengendalian bentuk dalam React tidak perlu sukar. Mulakan dengan komponen terkawal dan digunakan, kemudian skala sehingga cangkuk atau perpustakaan tersuai seperti yang diperlukan. Kuncinya adalah menjaga keadaan yang boleh diramal dan maklum balas pengguna jelas.

Pada asasnya, mengawal input, mengesahkan penyerahan, tunjukkan kesilapan, dan memutuskan kapan untuk melampaui reaksi vanila.

Atas ialah kandungan terperinci Panduan lengkap untuk membentuk pengendalian dalam reaksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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)

Topik panas

Tutorial PHP
1527
276
Menyelam mendalam ke webassembly (WASM) untuk pemaju depan Menyelam mendalam ke webassembly (WASM) untuk pemaju depan Jul 27, 2025 am 12:32 AM

WebAssembly (WASM) isagame-changerforfront-enddevelopersseekinghigh-performanceWebapplications.1.wasmisabinaryInstructionFatThatRunsatnear-nativespeed, enablinglanguageslikerust, c, andgoexecuteinthebrowser.2.itreBrowser.2.itreBrowser.2

Rendering sisi pelayan dengan Next.js dijelaskan Rendering sisi pelayan dengan Next.js dijelaskan Jul 23, 2025 am 01:39 AM

Server-siderendering (ssr) innext.jsgenerateshtmlontheserverforachrequest, InfrovingPormanceAndSeo.1.ssrisidealfordynamiccontentthatchangesfrequents, suchasuserdashboard

Pemantauan ralat dan penyelesaian pembalakan frontend Pemantauan ralat dan penyelesaian pembalakan frontend Jul 20, 2025 am 01:39 AM

Inti pemantauan dan pembalakan ralat front-end adalah untuk menemui dan mencari masalah secepat mungkin, dan elakkan aduan pengguna sebelum mengenali mereka. 1. Penangkapan kesilapan asas memerlukan penggunaan window.onerror dan window. 2. Apabila memilih sistem pelaporan ralat, berikan keutamaan kepada alat seperti Sentry, Logrocket, BugsNag, dan memberi perhatian kepada sokongan Sourcemap, penjejakan tingkah laku pengguna dan fungsi statistik pengelompokan; 3. Kandungan yang dilaporkan hendaklah termasuk maklumat penyemak imbas, URL halaman, timbunan ralat, identiti pengguna dan maklumat kegagalan permintaan rangkaian; 4. Kawalan kekerapan log untuk mengelakkan letupan log melalui strategi seperti deduplikasi, pengehadan semasa, dan pelaporan hierarki.

Memahami Corak Delegasi Acara JavaScript Memahami Corak Delegasi Acara JavaScript Jul 21, 2025 am 03:46 AM

Delegasi acara adalah teknik yang menggunakan mekanisme gelembung peristiwa untuk menyerahkan pemprosesan peristiwa elemen kanak -kanak kepada elemen induk. Ia mengurangkan penggunaan memori dan menyokong pengurusan kandungan dinamik dengan mengikat pendengar pada elemen induk. Langkah -langkah khusus adalah: 1. 2. Gunakan Event.Target untuk menentukan unsur -unsur kanak -kanak yang mencetuskan peristiwa dalam fungsi panggil balik; 3. Melaksanakan logik yang sepadan berdasarkan unsur -unsur kanak -kanak. Kelebihannya termasuk meningkatkan prestasi, memudahkan penyelenggaraan kod dan menyesuaikan diri dengan unsur -unsur yang ditambah secara dinamik. Apabila menggunakannya, anda harus memberi perhatian kepada sekatan gelembung peristiwa, elakkan pemantauan berpusat yang berlebihan, dan dengan munasabah memilih elemen induk.

Pengurusan Negeri Pertunjukan Pertama dengan Zustand Pengurusan Negeri Pertunjukan Pertama dengan Zustand Jul 25, 2025 am 04:32 AM

Zustandisalisightweight, PerformantStateManagementsolutionForreActAppsthatavoidsredux'sboilerplate; 1.useSelectiveStateslicingtopreventunnessaryre-rendersbyselecselectingonlytheneedstateProperty;

Apakah tujuan atribut REL dalam tag pautan dalam HTML? Apakah tujuan atribut REL dalam tag pautan dalam HTML? Aug 03, 2025 pm 04:50 PM

rel = "stylesheet" linkscssfilesforstylingthepage; 2.rel = "preload" hintStopreloadcriticalResourcesforperformance; 3.rel = "ikon" setSthewebsite'sfavicon; 4.rel = "alternate" menyediakan

Membina Aplikasi Frontend Tanpa Pelayan Membina Aplikasi Frontend Tanpa Pelayan Jul 20, 2025 am 04:11 AM

Inti aplikasi front-end menggunakan seni bina tanpa pelayan terletak pada hosting sumber statik dan panggilan atas permintaan. Mata utama termasuk: 1. Menyebarkan sumber statik ke CDN, secara automatik membina dan menggunakan melalui AWSS3, Vercel, Netlify dan platform lain, dan dengan mudah mengkonfigurasi dasar cache; 2. Fungsi back-end dilaksanakan oleh fungsi awan, seperti Awslambda dan CloudFlareWorkers, yang mengendalikan akses pangkalan data, menghantar e-mel, tanaman imej dan tugas-tugas lain, dan mencetuskan pulangan data JSON dengan permintaan HTTP; 3. Gunakan pangkalan data tanpa pelayan seperti supabase, dynamoDB, planetscale dan pangkalan data tanpa pelayan atau penyelesaian kod rendah untuk menguruskan data, secara langsung melalui API atau

Apakah tujuan atribut sasaran tag utama dalam HTML? Apakah tujuan atribut sasaran tag utama dalam HTML? Aug 02, 2025 pm 02:23 PM

ThetTargetTatTributeNanHtmlancHortAragspecifiesWherEtoopentHelinkedDocument.1._SelFopensTheLinkIndesAmetAB

See all articles