12.インタラクティブとインタラクティブ
12571 ワード
Memoization
コンピュータが同じ計算を繰り返す必要がある場合、以前に計算した値をメモリに格納して、繰り返し実行を低減し、プログラムの実際の実行速度を速める技術です.
アルゴリズムのコメント
主にアルゴリズムで動的計画法の問題を解く際に用いられる構造であり,これとは反対の概念は「Boottom up」である.全体的な構造は次のとおりです.
作成
JSでのコメント
useMemo
不要な場合に構成部品を再レンダリングするときのリソースの浪費を防ぐ
userMemoを使用してパフォーマンスを最適化します.import { useMemo, useState } from "react"
import "./App.css"
function App() {
const example = (users) => {
console.log("example 함수 실행")
return users.filter((user) => user).length
}
const [users, setUsers] = useState([false, false, false])
const [ex, setEx] = useState(false)
const handleClick = (i) => {
users[i] = !users[i]
setUsers([...users])
}
const handleInput = () => {
setEx(!ex)
}
// const check = example(users)
const check = useMemo(() => example(users), [users])
return (
<>
<h1>check circle +{check}</h1>
<input onInput={handleInput} type="text" />
{users.map((e, i) => {
return e ? (
<div key={i} onClick={() => handleClick(i)} className="red circle" />
) : (
<div key={i} onClick={() => handleClick(i)} className="blue circle" />
)
})}
</>
)
}
export default App
userMemoを使用せずに次のコードを実行すると、count関数がユーザー数の増加または減少に関係なく実行されることを確認できます.
useMemo(演算方法を定義する関数、依存配列(deps配列)
ex) const check = useMemo(() => example(users), [users])
useMemoを使用する場合、関数は依存配列で作成された変数が変更された場合にのみ機能します.他の理由で再レンダリングされた場合は機能しません.
useCallback
useMemoがuseMemoと同様のhookを使用して結果値を保存して再使用する場合、useCallbackは関数の再使用時に使用されます.これらの関数は、構成部品を再レンダリングするたびに作成されます.
関数にPropsが使用されている場合は、deps配列に含める必要があります.
useCallback xの使用
useCallbackの使用
レンダリング時の両者の違いは明らかではありません.ただし、propsを変更せずに仮想DOM->React.memo
が再レンダリングされないことを確認するには、このように関数を最適化する必要があります.
useEffect vs useMemo vs useCallback
userEffectと比較して、ページは最初のレンダリングで異なると思いますが、実際には両方の関数が最初のレンダリングで実行されているように見えます.
useMemoはuseEffectと似ていますが、実行する時点が異なります
useMemoはlocal callであり、このコンポーネントを使用してのみいくつかの操作を実行できます.userEffectは、非同期かどうかにかかわらず、すべての非同期要素のレンダリングが終了した後に実行されます.
userMemo->userLayoutEffect->userEffectの順に実行します.
値を保存し、繰り返し実行をブロックします。
Memoization
のために、usemoは리턴값
を保存し、必要に応じて取り出して使用する.
useCallbackは함수
を格納して使用する.useEffectでは最適化できません.
React.memo
React.memo
UI性能を向上させるために、Reactは高差コンポーネント(HOC)React.memo()
を提供する.React.memo()
にマッピングされたレンダリング結果を保存し、次回のレンダリング時にPropsが同じ場合は、不要な再レンダリングを防ぐためにアノテーションIDの内容を再使用します.関数要素に適用します.
propsが同じかどうかを確認する方法
propsまたはpropsのオブジェクトを比較するときに浅い比較を実行します.
比較方法を変更したい場合はReact.memoの2番目のパラメータを使用して比較関数を作成し、渡します.
比較関数がtrueを返すと、2つのオブジェクトは同じオブジェクトとみなされます.React.memo(component, [equalFuc(a, b)])
React.memo()の使用を推奨
同じpropsでよくレンダリングされるコンポーネント
親構成部品が常に再レンダリングされる場合、子構成部品に変化がない場合は、再レンダリングが発生しないように、子構成部品が再レンダリングされます.memoの使用を推奨
React.memo()の使用は推奨されません。
上記の推奨でない場合は、可能な限り使用することを推奨しません.
クラスベースの構成部品の場合。
クラスベースの構成部品を最適化する必要がある場合は、PureComponentまたはshouldComponentUpdate()メソッドの実装を拡張することを推奨します.
頻繁にPropsを交換する
propsを頻繁に変更する場合は、propsが同じ場合にメモリ最適化されるため、使用する必要はありません.
props伝達関数の使用
関数は、通常のオブジェクトと比較する場合にのみ、通常のオブジェクトと同じ比較原則(true)を有します.
この場合はuseCallback()を使用します
useCallback()を使用して、同じ関数を返すために関数インスタンスを保持します.
Reference
この問題について(12.インタラクティブとインタラクティブ), 我々は、より多くの情報をここで見つけました
https://velog.io/@deli-ght/12.-React와-Memoization
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { useMemo, useState } from "react"
import "./App.css"
function App() {
const example = (users) => {
console.log("example 함수 실행")
return users.filter((user) => user).length
}
const [users, setUsers] = useState([false, false, false])
const [ex, setEx] = useState(false)
const handleClick = (i) => {
users[i] = !users[i]
setUsers([...users])
}
const handleInput = () => {
setEx(!ex)
}
// const check = example(users)
const check = useMemo(() => example(users), [users])
return (
<>
<h1>check circle +{check}</h1>
<input onInput={handleInput} type="text" />
{users.map((e, i) => {
return e ? (
<div key={i} onClick={() => handleClick(i)} className="red circle" />
) : (
<div key={i} onClick={() => handleClick(i)} className="blue circle" />
)
})}
</>
)
}
export default App
useMemoがuseMemoと同様のhookを使用して結果値を保存して再使用する場合、useCallbackは関数の再使用時に使用されます.これらの関数は、構成部品を再レンダリングするたびに作成されます.
関数にPropsが使用されている場合は、deps配列に含める必要があります.
useCallback xの使用
useCallbackの使用
レンダリング時の両者の違いは明らかではありません.ただし、propsを変更せずに仮想DOM->
React.memo
が再レンダリングされないことを確認するには、このように関数を最適化する必要があります.useEffect vs useMemo vs useCallback
userEffectと比較して、ページは最初のレンダリングで異なると思いますが、実際には両方の関数が最初のレンダリングで実行されているように見えます.
useMemoはuseEffectと似ていますが、実行する時点が異なります
useMemoはlocal callであり、このコンポーネントを使用してのみいくつかの操作を実行できます.userEffectは、非同期かどうかにかかわらず、すべての非同期要素のレンダリングが終了した後に実行されます.
userMemo->userLayoutEffect->userEffectの順に実行します.
値を保存し、繰り返し実行をブロックします。
Memoization
のために、usemoは리턴값
を保存し、必要に応じて取り出して使用する.
useCallbackは함수
を格納して使用する.useEffectでは最適化できません.
React.memo
React.memo
UI性能を向上させるために、Reactは高差コンポーネント(HOC)React.memo()
を提供する.React.memo()
にマッピングされたレンダリング結果を保存し、次回のレンダリング時にPropsが同じ場合は、不要な再レンダリングを防ぐためにアノテーションIDの内容を再使用します.関数要素に適用します.
propsが同じかどうかを確認する方法
propsまたはpropsのオブジェクトを比較するときに浅い比較を実行します.
比較方法を変更したい場合はReact.memoの2番目のパラメータを使用して比較関数を作成し、渡します.
比較関数がtrueを返すと、2つのオブジェクトは同じオブジェクトとみなされます.React.memo(component, [equalFuc(a, b)])
React.memo()の使用を推奨
同じpropsでよくレンダリングされるコンポーネント
親構成部品が常に再レンダリングされる場合、子構成部品に変化がない場合は、再レンダリングが発生しないように、子構成部品が再レンダリングされます.memoの使用を推奨
React.memo()の使用は推奨されません。
上記の推奨でない場合は、可能な限り使用することを推奨しません.
クラスベースの構成部品の場合。
クラスベースの構成部品を最適化する必要がある場合は、PureComponentまたはshouldComponentUpdate()メソッドの実装を拡張することを推奨します.
頻繁にPropsを交換する
propsを頻繁に変更する場合は、propsが同じ場合にメモリ最適化されるため、使用する必要はありません.
props伝達関数の使用
関数は、通常のオブジェクトと比較する場合にのみ、通常のオブジェクトと同じ比較原則(true)を有します.
この場合はuseCallback()を使用します
useCallback()を使用して、同じ関数を返すために関数インスタンスを保持します.
Reference
この問題について(12.インタラクティブとインタラクティブ), 我々は、より多くの情報をここで見つけました
https://velog.io/@deli-ght/12.-React와-Memoization
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
React.memo
UI性能を向上させるために、Reactは高差コンポーネント(HOC)
React.memo()
を提供する.React.memo()
にマッピングされたレンダリング結果を保存し、次回のレンダリング時にPropsが同じ場合は、不要な再レンダリングを防ぐためにアノテーションIDの内容を再使用します.関数要素に適用します.propsが同じかどうかを確認する方法
propsまたはpropsのオブジェクトを比較するときに浅い比較を実行します.
比較方法を変更したい場合はReact.memoの2番目のパラメータを使用して比較関数を作成し、渡します.
比較関数がtrueを返すと、2つのオブジェクトは同じオブジェクトとみなされます.
React.memo(component, [equalFuc(a, b)])
React.memo()の使用を推奨
同じpropsでよくレンダリングされるコンポーネント
親構成部品が常に再レンダリングされる場合、子構成部品に変化がない場合は、再レンダリングが発生しないように、子構成部品が再レンダリングされます.memoの使用を推奨
React.memo()の使用は推奨されません。
上記の推奨でない場合は、可能な限り使用することを推奨しません.
クラスベースの構成部品の場合。
クラスベースの構成部品を最適化する必要がある場合は、PureComponentまたはshouldComponentUpdate()メソッドの実装を拡張することを推奨します.
頻繁にPropsを交換する
propsを頻繁に変更する場合は、propsが同じ場合にメモリ最適化されるため、使用する必要はありません.
props伝達関数の使用
関数は、通常のオブジェクトと比較する場合にのみ、通常のオブジェクトと同じ比較原則(true)を有します.
この場合はuseCallback()を使用します
useCallback()を使用して、同じ関数を返すために関数インスタンスを保持します.
Reference
この問題について(12.インタラクティブとインタラクティブ), 我々は、より多くの情報をここで見つけました https://velog.io/@deli-ght/12.-React와-Memoizationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol