Rumah  >  Artikel  >  hujung hadapan web  >  Corak Reka Bentuk React~Komponen Bekas / Komponen Terkawal Tidak Terkawal~

Corak Reka Bentuk React~Komponen Bekas / Komponen Terkawal Tidak Terkawal~

Barbara Streisand
Barbara Streisandasal
2024-09-24 06:15:02668semak imbas

React Design Patterns~Container Componets / Uncontrolled Controlled Component~

  • Komponen Tidak Terkawal

Corak ini bermakna React tidak mengawal data borang dan DOM memegang keadaan borang.

Apabila anda mengakses DOM, anda mesti menetapkan atribut ref menggunakan cangkuk useRef.

・src/components/uncontrolled-form.jsx

import React from "react";

export const UncontrolledForm = () => {
  const nameInputRef = React.createRef();
  const ageInputRef = React.createRef();

  console.log("renedering");

  const SubmitForm = (e) => {
    console.log(nameInputRef.current.value);
    console.log(ageInputRef.current.value);

    e.preventDefault();
  };

  return (
    <form onSubmit={SubmitForm}>
      <input name="name" type="text" placeholder="Name" ref={nameInputRef} />
      <input name="age" type="number" placeholder="Age" ref={ageInputRef} />
      <input type="submit" value="Submit" />
    </form>
  );
};
  • Komponen Terkawal

Corak ini bermakna React mengawal data borang menggunakan cangkuk useState.

Kami boleh mengawal sepenuhnya nilai input dan mengemas kininya dalam masa nyata.

import React, { useEffect, useState } from "react";

export const ControlledForm = () => {
  const [errorMessage, setErrorMessage] = useState("");
  const [name, setName] = useState("");
  const [age, setAge] = useState();

  useEffect(() => {
    if (name.length < 1) {
      setErrorMessage("name can not be empty");
    } else {
      setErrorMessage("");
    }
  }, [name]);

  return (
    <form>
      {errorMessage&& <p>{errorMessage}</p>}
      <input
        type="text"
        name="name"
        placeholder="Name"
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <input
        type="number"
        name="age"
        placeholder="Age"
        value={age}
        onChange={(e) => setAge(e.target.value)}
      />
      <button>Submit</button>
    </form>
  );
};

Atas ialah kandungan terperinci Corak Reka Bentuk React~Komponen Bekas / Komponen Terkawal Tidak Terkawal~. 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
Artikel sebelumnya:Apa itu Screaming Architecture?Artikel seterusnya:Apa itu Screaming Architecture?