Maison  >  Article  >  interface Web  >  Modèles de conception React ~ Composants de conteneurs / Composants contrôlés non contrôlés ~

Modèles de conception React ~ Composants de conteneurs / Composants contrôlés non contrôlés ~

Barbara Streisand
Barbara Streisandoriginal
2024-09-24 06:15:02672parcourir

React Design Patterns~Container Componets / Uncontrolled Controlled Component~

  • Composant non contrôlé

Ce modèle signifie que React ne contrôle pas les données du formulaire et que le DOM détient l'état du formulaire.

Lorsque vous accédez au DOM, vous devez définir l'attribut ref à l'aide du hook useRef.

・src/components/uncontrollé-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>
  );
};
  • Composant contrôlé

Ce modèle signifie que React contrôle les données du formulaire à l'aide du hook useState.

Nous pouvons contrôler entièrement la valeur d'entrée et la mettre à jour en temps réel.

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>
  );
};

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn