Maison > interface Web > js tutoriel > 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
Libérer: 2024-09-24 06:15:02
original
721 Les gens l'ont consulté

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>
  );
};
Copier après la connexion
  • 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>
  );
};
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal