Titre réécrit comme suit : Les variables ne sont pas mises à jour lors de l'utilisation du hook useState()
P粉066224086
P粉066224086 2023-09-10 18:43:16
0
1
535

Je travaille sur un projet de réseau social utilisant React.

Je souhaite remplacer un composant d'un composant de classe par un composant de fonction et utiliser des hooks, alors un problème global se pose :

Lorsque je passe à un nouvel utilisateur, la page affiche le statut de l'utilisateur précédent

J'ai utilisé le hook useState(), j'ai tout débogué, mais pour une raison quelconque, lorsqu'un nouveau composant d'état est rendu, il ne se met pas à jour

const ProfileStatus = (props) => {
  const [edditMode, setEdditMode] = useState(false);
  const [status, setValue] = useState(props.status || "Empty");

  const onInputChange = (e) => {
    setValue(e.target.value);
  };
  const activateMode = () => {
    setEdditMode(true);
  };
  const deactivateMode = () => {
    setEdditMode(false);
    props.updateUserStatus(status);
  };

Je pensais que le problème était que le composant conteneur était toujours un composant de classe, mais après l'avoir refait, rien n'a changé.

P粉066224086
P粉066224086

répondre à tous(1)
P粉674876385

Une solution de contournement consiste à utiliser des useEffecthooks pour déclencher des mises à jour lorsque les propriétés changent. Vous pouvez utiliser ce hook pour comparer la propriété actuelle avec la propriété précédente, puis mettre à jour l'état dans l'état.

Vous pouvez l'utiliser comme référence et effectuer des ajustements en fonction de votre propre code.

const ProfileStatus = (props) => {
  const [edditMode, setEdditMode] = useState(false);
  const [status, setValue] = useState(props.status || "Empty");

  useEffect(() => {
    setValue(props.status || "Empty");
  }, [props.status]);

  const onInputChange = (e) => {
    setValue(e.target.value);
  };
  const activateMode = () => {
    setEdditMode(true);
  };
  const deactivateMode = () => {
    setEdditMode(false);
    props.updateUserStatus(status);
  };
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!