React hooks: useState, useEffect
4417 ワード
最初のプロジェクトでクラスコンポーネントを使用するのとは異なり、2番目のプロジェクトではfunctional componentを使用して反応コードを構築します.
Functional componentは、hooksを使用してclass componentのライフサイクルを強化する関数をコンポーネントとして使用します.
(強化といっても、実際にはライフサイクルを使うよりフックを使う方が簡単です.)
useState as state in constructor
useStateの作成は、functional component内の最上位に位置します.
したがって、mockデータまたはサーバ上のデータを取得する場合、userEffectを使用して次のようにデータを受信することができる.
useEffect as componentDidMount and componentDidUpdate
userEffectの2番目の位置は、パラメータとして依存配列を受け入れる.
この配列の値は追跡および更新されるため、空の配列を配置すると、useEffectはcomponentDidMountのように最初のレンダリング時にのみ実行されます.
2番目のパラメータに何も与えなければ、1番目のパラメータは更新され続けます.そのため、メモリの漏れが深刻で、ノートパソコンは熱いフライパンになります.
Functional componentは、hooksを使用してclass componentのライフサイクルを強化する関数をコンポーネントとして使用します.
(強化といっても、実際にはライフサイクルを使うよりフックを使う方が簡単です.)
useState as state in constructor
useStateの作成は、functional component内の最上位に位置します.
const [cateList, setCateList] = useState("통합검색");
const [books, setBooks] = useState([]);
const [sort, setSort] = useState("keyword");
useEffectのクラスライフサイクルにおける役割はcomponentDidMount()
、componentDidUpdate()
と同じである.したがって、mockデータまたはサーバ上のデータを取得する場合、userEffectを使用して次のようにデータを受信することができる.
useEffect(() => {
fetch("/data/bookList.json")
.then((res) => res.json())
.then((res) => {
console.log("res.books >>>", res.book_list);
setBooks(res.book_list);
});
}, []);
上のコードではuserEffectの2番目のパラメータが空の配列を与えていることがわかります.useEffect as componentDidMount and componentDidUpdate
userEffectの2番目の位置は、パラメータとして依存配列を受け入れる.
この配列の値は追跡および更新されるため、空の配列を配置すると、useEffectはcomponentDidMountのように最初のレンダリング時にのみ実行されます.
2番目のパラメータに何も与えなければ、1番目のパラメータは更新され続けます.そのため、メモリの漏れが深刻で、ノートパソコンは熱いフライパンになります.
Reference
この問題について(React hooks: useState, useEffect), 我々は、より多くの情報をここで見つけました https://velog.io/@jeanbaek/React-hooks-useState-useEffectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol