ReactJS で、useState の値を別のファイルから更新するにはどうすればよいですか?
P粉237029457
2023-08-17 19:46:21
<p>2 つの異なるファイルからオブジェクトの状態にアクセスして更新しようとしています。各ファイルにローカルの useState を使用すれば変更できますが、うまくいきません。</p>
<p>カスタムフックとローカル状態を使用して、さまざまな解決策を試しましたが、どれも問題を解決できませんでした。約 5 時間この問題で立ち往生し、本当に頭がおかしくなりそうでした。助けていただければ幸いです。素晴らしいです。 </p>
<p>問題は、return ステートメントからフックを呼び出そうとしていることだと思いますが、それがレンダリングされる場所であるため、それを行う別の方法が思いつきません。 </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 [hero, setHero] = useState(newHero);
setHero(newHero);
};
戻り値 {UpdateHero};
}</pre>
<p>現在受け取っているエラー メッセージは次のとおりです。
React フック「useHero」をコールバック関数で呼び出すことはできません。 React フックは、React 関数コンポーネントまたはカスタム React フック関数で呼び出す必要があります</p>
フック内の関数ではなく、フック自体の状態を定義します。例えば:### リーリー
また、ここではinitialHero
後者は、と
newHeroの違いにも注意してください。前者は、フックが最初に呼び出されたときに最初の状態値を初期化するために使用されます:
リーリーUpdateHero
上記のコードでは、マークアップ内でフックを直接呼び出していないことに注意してください。フックはコンポーネントの早い段階で呼び出されます (また、同じフックがレンダリングごとに同じ順序で呼び出されます)。フックによって返されたデータや関数は、後で使用できます。を呼び出すときに新しい値に更新するために使用されます:
リーリーいくつかのメモ:
はここでは使用されません。使用できるように、フックもその値を返す必要があると思います。
はここでは冗長ですが、
setHeroを直接返すことができます。