派生状態とは何ですか?テキストに対して 1 つの状態を考えてから、uppercaseText に対して別の状態を考えてください。
function Foo() { const [text, setText] = useState('hello, za warudo!'); const [uppercaseText, setUppercaseText] = useState(text.toUpperCase()); useEffect(() => { setUppercaseText(text.toUpperCase()); }, [text]) ... }
そうは言っても、誰かがこれを行うと考えるのはクレイジーです…よね?右?
はい、このような例を見れば、これが間違っていることがわかります。
それは高価な計算だと言ってください...解決策は useMemo を使用することです。
function Foo() { const [text, setText] = useState('hello, za warudo!'); const uppercaseText = useMemo(() => text.toUpperCase(), [text]); ... }
私は、状態が「別の状態」であるべきなのか、それとも単なる計算されたプロパティ (場合によっては記憶されるか否か) であるべきかを 知る を容易にする良い考え方を思いつきました。
function Foo({ text = 'hello, za warudo!', uppercaseText = text.toUpperCase(), }) { ... } // Forget react for a moment... // Would you ever call a function like this? const text = 'hello, za warudo!'; Foo({ text, uppercaseText: text.toUpperCase(), });
これらの状態を「小道具」と考えると、それがあるべき姿がより露骨になります。
React を完全に忘れて、関数だけを考えてください:
変数を使用して関数を呼び出してから、内部で計算できる別の変数を呼び出しますか?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3