旧ライフサイクルと比較して
React16以降、3つのライフサイクルが非推奨になりました(ただし削除はされません)
新しいバージョンのライフサイクルに新しいフックが追加されました
更新前にスナップショットを取得する
プロパティから派生した状態を取得するgetDerivedStateFromProps はインスタンス用ではないため、静的メソッドとして定義する必要があります。戻り値を与える必要がある 戻り値は状態Objまたはnullになります //propsから派生した状態を取得する static getDerivedStateFromProps(props,state){ リターンプロップ } 状態の値が常にpropsに依存する場合は、getDerivedStateFromPropsを使用できます。 <div id="test"></div> <!-- react core ライブラリをインポート --> <script src="../js/17.0.1/react.development.js"></script> <!-- react-dom を導入して、DOM を操作するための react をサポートする --> <script src="../js/17.0.1/react-dom.development.js"></script> <!-- jsx を js に変換するには babel を導入します --> <script src="../js/17.0.1/babel.min.js"></script> <スクリプトタイプ='text/babel'> // コンポーネントクラスを作成する Count extends React.Component{ // コンストラクタ コンストラクタ(props){ console.log('Count --- コンストラクター') スーパー(小道具) // 状態を初期化します this.state = {count:0} } //フックcomponentDidMount(){ console.log('Count --- componentDidMount') } // コンポーネントのアンインストールボタンのコールバック death=()=>{ ReactDOM.unmountComponentAtNode(document.getElementById('test')) } // +1 を実装する 追加 =()=>{ // 元の状態を取得する const {count} = this.state // ステータスを更新 this.setState({count:count+1}) } // 強制更新ボタンのコールバック force=()=>{ this.forceUpdate() } 静的 getDerivedStateFromProps(props,state){ console.log('getDerivedStateFromProps', プロパティ, 状態) リターンプロップ } // コンポーネント更新バルブを制御する shouldComponentUpdate(){ console.log('Count --- shouldComponentUpdate') // 戻り値が false の場合、バルブはデフォルトで閉じられます。 真を返す } //コンポーネント更新完了フックcomponentDidUpdate(){ console.log('Count --- コンポーネントの更新回数') } // コンポーネントはアンインストールされます hook componentWillUnmount(){ console.log('Count --- componentWillUnmount'); } 与える(){ console.log('カウント --- レンダリング') const {count} = this.state 戻る( <div> <h2>現在の合計: {count}</h2> <button onClick={this.add}>クリックして +1</button> <button onClick={this.death}>クリックしてコンポーネントをアンインストールします</button> <button onClick={this.force}>強制的に更新するにはここをクリックします(データは変更されません)</button> </div> ) } } // コンポーネントのレンダリング ReactDOM.render(<Count count={166}/>,document.getElementById('test')) </スクリプト> 実行結果 更新前にスナップショットを取得する戻り値は null またはスナップショットになります。null の場合、効果はありません。スナップショットの場合、戻り値は componentDidUpdate の 3 番目のパラメータに渡すことができます。 <div id="test"></div> <!-- react core ライブラリをインポート --> <script src="../js/17.0.1/react.development.js"></script> <!-- react-dom を導入して、DOM を操作するための react をサポートする --> <script src="../js/17.0.1/react-dom.development.js"></script> <!-- jsx を js に変換するには babel を導入します --> <script src="../js/17.0.1/babel.min.js"></script> <スクリプトタイプ='text/babel'> // コンポーネントクラスを作成する Count extends React.Component{ // コンストラクタ コンストラクタ(props){ console.log('Count --- コンストラクター') スーパー(小道具) // 状態を初期化します this.state = {count:0} } //フックcomponentDidMount(){ console.log('Count --- componentDidMount') } // コンポーネントのアンインストールボタンのコールバック death=()=>{ ReactDOM.unmountComponentAtNode(document.getElementById('test')) } // +1 を実装する 追加 =()=>{ // 元の状態を取得する const {count} = this.state // ステータスを更新 this.setState({count:count+1}) } // 強制更新ボタンのコールバック force=()=>{ this.forceUpdate() } 静的 getDerivedStateFromProps(props,state){ console.log('getDerivedStateFromProps', プロパティ, 状態) nullを返す } 更新前にスナップショットを取得する(){ console.log('getSnapshotBeforeUpdate'); 「eee」を返す } // コンポーネント更新バルブを制御する shouldComponentUpdate(){ console.log('Count --- shouldComponentUpdate') // 戻り値が false の場合、バルブはデフォルトで閉じられます。 真を返す } //コンポーネント更新完了フックcomponentDidUpdate(preProps,preState,snapshotValue){ console.log('Count---1componentDidUpdate',preProps,preState,snapshotValue); } // コンポーネントはアンインストールされます hook componentWillUnmount(){ console.log('Count --- componentWillUnmount'); } 与える(){ console.log('カウント --- レンダリング') const {count} = this.state 戻る( <div> <h2>現在の合計: {count}</h2> <button onClick={this.add}>クリックして +1</button> <button onClick={this.death}>クリックしてコンポーネントをアンインストールします</button> <button onClick={this.force}>強制的に更新するにはここをクリックします(データは変更されません)</button> </div> ) } } // コンポーネントのレンダリング ReactDOM.render(<Count count={166}/>,document.getElementById('test')) </スクリプト> 要約するライフサイクルの 3 つのフェーズ (新規)1. 初期化フェーズ: ReactDOM.render() によってトリガーされる - 初期レンダリング コンストラクター()getDerivedStateFromPropsrender()componentDidMount() 2. 更新フェーズ: コンポーネント内の this.setSate() または親コンポーネントの再レンダリングによってトリガーされます。 getDerivedStateFromPropsshouldComponentUpdate()render()getSnapshotBeforUpdatecomponentDidUpdate() 3. コンポーネントのアンマウント: ReactDOM.unmountComponentAtNode() によってトリガーされます コンポーネントのマウントを解除します() 重要なフックrender: レンダリングを初期化するか、レンダリング呼び出しを更新する。componentDidMount: 監視を開始し、Ajax リクエストを送信する。componentWillUnmount: タイマーのクリーンアップなどの仕上げ作業を行う。 捨てられるフック
現在使用すると警告が表示されます。次のメジャー バージョンでは UNSAFE_ プレフィックスの使用が必須になります。将来的には完全に廃止される可能性があり、推奨されません。 これで、新しいバージョンの React ライフサイクル フック機能に関するこの記事は終了です。React ライフサイクル フック機能に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Tomcat で静的リソースを処理するチュートリアル
>>: Keras を使って SQL インジェクション攻撃を判断する (例の説明)
この記事では、MySQL が条件に基づいてデータをクエリし、別のテーブルに更新する方法を例を使用して...
この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...
以下の機能が実装されています。 1. ユーザー名: onfouc は msg ルールを表示します。o...
今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...
取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...
概要Nginx ロード バランシングは、アップストリーム サーバー (実際のビジネス ロジックによっ...
a タグではクリック イベントがよく使用されます。 1. href="javascript...
opencv2 の簡単なインストール: conda インストール --channel https:/...
最近、Dreamweaver を使用して製品プレゼンテーションを作成し、画像にハイパーリンクを追加し...
目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....
Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...
関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...
最近、Linux を使用してローカルにログインしていたところ、正常にログインできず、次のエラー メッ...
前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしまし...
勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...