[TIL]学習日記#4
ライフサイクルメソッド
マウント
DOMを作成してWebブラウザに表示
方法:
更新
次の4つの場合に更新
インストールされていません
DOMからインストールとは逆のコンポーネントを削除
方法:
整理する
ライフサイクルメソッドは、構成部品の状態が変化したときに実行されます.DOMに直接接触する必要がある場合に非常に有用である.
Hooks
どうもありがとう(?)機能
useState
慣れる
useStateは最も基本的なHookです.関数構成部品からステータスを管理する必要がある場合に使用します.
関数を呼び出すと、配列が返され、配列の最初の要素はステータス値であり、2番目の要素はステータスを設定する関数です.
例:
const [value, setValue] = useState(0);
useEffect
構成部品をレンダーするたびにアクションを実行する
前に学習したコンポーネントDidMountとコンポーネントDidUpdateの組み合わせに似ています.
特定の値のみを実行する場合は、2番目のパラメータに条件を追加します.(空の値はマウント時のみ)
例:
useEffect(() => {console.log('메세지');}, []);
useReducer
useStateの親互換性?
1番目のパラメータに関数を追加し、2番目のパラメータに対応するReduserのデフォルト値を追加します.
李杜書の概念は今度もっと詳しく勉強します.
例:
const [state, dispatch] = useReducer(reducer, {value:0});
useMemo
素子内部で生成される演算を最適化できます.
レンダリング中は、特定の値が変更された場合にのみ演算が行われ、変更されていない場合は、以前の演算値が再使用されます.
例:
const avg = useMemo(() => getAverage(list),[list]);
useCallback
上のusemoとかなり似ています.
以前に作成した関数を再使用できます.
例:
const func1 = useCallback(e => {setNumber(e.target.value);}, [])
useRef
refを関数型素子で使いやすくします.
それ以外は
Custom Hooksを作成して使用することもできます.
他の開発者が作成したHooksもライブラリインストールとして使用できます.
新しく作成した構成部品については、関数構成部品とHooksを使用することをお勧めします.必要に応じてクラス構成部品のみを実施する.
例
import React, {useState, useMemo, useCallback, useRef} from 'react';
const getAverage = numbers => {
console.log('평균값 계산 중..')
if (numbers.length === 0 ) return 0;
const sum = numbers.reduce((a,b) => a+b);
return sum/numbers.length;
}
const Average = () => {
const [list, setList] = useState([]);
const [number, setNumber] = useState('')
const inputEl = useRef(null);
const onChange = useCallback(e => {
setNumber(e.target.value);
}, [])
const onInsert = useCallback(() => {
const nextList = list.concat(parseInt(number));
setList(nextList);
setNumber('')
inputEl.current.focus();
}, [number,list])
const avg = useMemo(() => getAverage(list), [list])
return(
<div>
<input value={number} onChange={onChange} ref={inputEl}/>
<button onClick={onInsert}>등록</button>
<ul>
{list.map((value,index)=> <li key={index}>{value}</li>)}
</ul>
<div>
<b>평균값:</b> {avg}
</div>
</div>
)
}
export default Average;
ああ...辛いReference
この問題について([TIL]学習日記#4), 我々は、より多くの情報をここで見つけました https://velog.io/@hw020123/TIL-React-공부일기-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol