useMemo
より多くの小道具を複数の小さなコンポーネントに渡すコンポーネントを分解します。 答えは... です!
2つのオブジェクトは同じように見えますが、JavaScriptオブジェクトは参照に従って渡されます。つまり、同じように見えても同じオブジェクトではありません。メモリに異なる分布があります。 Object.is()
したがって、
<code class="language-javascript">Object.is( { hello: "world" }, { hello: "world" }, );</code>
false
右のReactフックを使用して不必要な再レンダリングを避けることができます
しかし、およびmemo
は、「高価な」計算に使用する必要があります。この例では、2つのキーと文字列値のみの単純なオブジェクトは「高価」ではありません。他のソリューションが必要です。
<code class="language-javascript">const Parent = () => { const user = { name: "Lee", age: 30 }; return <Child user={user} />; }; // Child 组件重新渲染 const Child = React.memo(({ user }: { user: { name: string; age: number } }) => { console.log("Child 渲染"); return <div>{user.name}</div>; });</code>
元の値を小道具に渡す可能であれば、元の値を小道具として渡すのが最善です。たとえば、useMemo
<code class="language-javascript">const Parent = () => { const user = React.useMemo(() => ({ name: "Lee", age: 30 }), []); return <Child user={user} />; };</code>
他のコンポーネントを作成する(単一の責任の原則)useMemo
useCallback
以上がReact で「オブジェクト」プロパティを避けるべき理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。