react Hook s全面転換攻略(一)react本編のuseState、useEffect
2841 ワード
use State
古典的なケース:
use Statit-intialState
この初期値は任意のパラメータを受け入れることができますが、彼が関数として受け取ると
多くの人がclassのset Stateを使う時、彼のコールバック関数をよく使うかもしれませんが、ここでは残念ながら、彼は新しい値しか受け入れられません.もし対応したいなら、useeffectを使ってもいいです.この問題などはジャンプリンクを提供します.
useeffect
構文:
セットステーションとのコールバック関数:
コールバック値に関する秘密:
戻り値と言えば、彼は多くの値を受け入れることができますが、彼はどのような値を受け入れられますか?
まず第一に、私たちは、string、number、undefined、nullの彼の値が正常に検出されます.問題の鍵はやはりObjectとfunctionです.
objectに関する試験:
戻り値をfunctionの外側のobjectに設定します.
このように値を設定する場合:
再試験:
結論を出す:依存値がobjectである場合、彼の値参照が変化するとeffectの更新がトリガされる. しかし、オブジェクト内の値の変化だけで引用が変化しない場合、effectは依然として をトリガしない.
functionに関する試験の結論:初期値がfunctionであり、それを数字にするなど、effect をトリガする. functionも対象です.値を上に追加すると、彼のeffectもトリガされません. は新しい関数として参照すると、彼は毎回トリガされます. テストが終わりました.皆さんもeffectについて多くの理解ができたと信じています.
他のヤフオクアプリとreduxの全面的な変換、eslintの新たな構成などについても説明します.
関連記事: react Hook s全面変換攻略(一)react本編のuseState、useffect react Hook s全面変換攻略(二)react本編残アプリ react Hook s完全変換攻略(3)グローバルストレージソリューション
古典的なケース:
import { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
You clicked {count} times
)
}
この例では、 useState(0)
は最新のHOksアプリである.構文:function useState(initialState: S | (() => S)): [S, Dispatch>];
その中でstateは彼の値で、set Stateは値を設定する関数で、initial Stateは初期値です.use Statit-intialState
この初期値は任意のパラメータを受け入れることができますが、彼が関数として受け取ると
Lazy initialization
(遅延初期化)になります.この関数の戻り値はinitial Stateです.const [count, setCount] = useState(0);
const [count, setCount] = useState(()=>0);
// ,
const [count, setCount] = useState(()=>{
console.log(' ')
// class constructor
return 0
});
//
use Statit-set State多くの人がclassのset Stateを使う時、彼のコールバック関数をよく使うかもしれませんが、ここでは残念ながら、彼は新しい値しか受け入れられません.もし対応したいなら、useeffectを使ってもいいです.この問題などはジャンプリンクを提供します.
useeffect
構文:
function useEffect(effect: EffectCallback, deps?: DependencyList): void;
古典的なケース:useEffect(() => {
console.log(' dep , dep , ')
return () => {
console.log(' unmount ')
};
});
depsは1つの配列でなければなりませんが、空の配列の場合: useEffect(() => {
console.log(' componentDidMount')
}, [])
depsがあっても、彼は初期化の時にトリガします.セットステーションとのコールバック関数:
useState-setState
において、classのset Stateには全部リプライがありますが、HookではuseEffectを通じて同様にその効果を実現できます.コールバック値に関する秘密:
戻り値と言えば、彼は多くの値を受け入れることができますが、彼はどのような値を受け入れられますか?
まず第一に、私たちは、string、number、undefined、nullの彼の値が正常に検出されます.問題の鍵はやはりObjectとfunctionです.
objectに関する試験:
戻り値をfunctionの外側のobjectに設定します.
let deps = {grewer: 1}
ボタンをクリックする時:deps.grewer = deps.grewer + 1;
console.log(deps)
deps.grewerの値は変化していますが、effectはトリガされていません.このように値を設定する場合:
deps = {grewer: deps.grewer + 1};
毎回effect関数を触発します.再試験:
deps = Object.assign({}, deps)
同じように毎回effect関数をトリガします.結論を出す:
functionに関する試験の結論:
他のヤフオクアプリとreduxの全面的な変換、eslintの新たな構成などについても説明します.
関連記事: