Dans ReactJS, comment mettre à jour la valeur de useState à partir d'un fichier séparé ?
P粉237029457
P粉237029457 2023-08-17 19:46:21
0
1
397
<p>J'essaie d'accéder et de mettre à jour l'état d'un objet à partir de deux fichiers différents, si j'utilise un useState local pour chaque fichier, je peux le modifier, mais cela ne fonctionne pas, </p> <p>J'ai essayé de nombreuses solutions différentes, en utilisant des hooks personnalisés et l'état local, mais aucune d'entre elles n'a résolu mon problème. Je suis resté bloqué sur ce problème pendant environ 5 heures et cela me rendait vraiment fou, toute aide serait appréciée. </p> <p>Je pense que le problème est que j'essaie d'appeler le hook à partir de l'instruction return, mais je ne vois aucune autre façon de le faire, car c'est là qu'il est rendu. </p> <p>information.js :</p> <pre class="brush:php;toolbar:false;"><button class="active" onClick={() => useSetHero(hero)}></pre> <p>hero.js :</p> <pre class="brush:php;toolbar:false;">export const useSetHero = (newHero) => const UpdateHero = () => const [héros, setHero] = useState(newHero); setHero(nouveauHéros); } ; retourner { UpdateHero } ; }</pré> <p>Le message d'erreur que je reçois actuellement est : React Hook "useHero" ne peut pas être appelé dans une fonction de rappel. Les React Hooks doivent être appelés dans un composant de fonction React ou dans une fonction React Hook personnalisée</p>
P粉237029457
P粉237029457

répondre à tous(1)
P粉729518806

为钩子本身定义状态,而不是钩子内部的函数。例如:

export const useHero = (initialHero) => {
  const [hero, setHero] = useState(initialHero);

  const UpdateHero = (newHero) => {
    setHero(newHero);
  };

  return { UpdateHero };
}

此外,请注意这里的initialHeronewHero之间的区别。前者在首次调用钩子时用于初始化第一个状态值:

const { UpdateHero } = useHero(someValueHere);

而后者在调用UpdateHero时用于将其更新为新值:

<button class="active" onClick={() => UpdateHero(hero)}>

请注意,在上述代码中,您不会直接在标记中调用钩子。钩子会在组件的早期调用(并且在每次渲染中以相同的顺序调用相同的钩子)。然后可以稍后使用钩子返回的数据和/或函数。


一些注意事项:

  1. 这里没有使用hero。我想钩子也应该返回该值,以便可以使用它。
  2. UpdateHero在这里是多余的,您可以直接返回setHero

我假设这两个问题都是因为这只是您尝试做的事情的一个非常简化的示例,实际的钩子比这个更复杂。但是,如果不考虑这些问题,上述钩子可以简化为:

export const useHero = (initialHero) => {
  const [hero, UpdateHero] = useState(initialHero);

  return { hero, UpdateHero };
}
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!