旧ライフサイクルと比較して
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 インジェクション攻撃を判断する (例の説明)
クローラーの開発プロセス中に、クローラーを複数のサーバーに展開する必要がある状況に遭遇したことがある...
導入2日前に見た問題について詳細に書きます。バイトコンピューターがバイナリに基づいていることは誰もが...
マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...
非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...
まとめこの記事では、次の一般的なレイアウトを紹介します。 3 列レイアウトを実装する方法は多数ありま...
目次CURRENT_TIMESTAMPの使用CURRENT_TIMESTAMPを使用したタイムスタン...
クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...
SQL実行ステップの詳細な分析まず、ステートメントが実行される順序を見てみましょう。 (8)選択する...
1. まず、node、express、express-generator をインストールします (4...
序文:この記事では主に、MySQL の where、group by、order by、limit、...
この記事では、LinuxシステムのVMwareインストールの具体的な手順を参考までに紹介します。具体...
1. テストテーブルを作成する テーブル `mysql_genarate` を作成します ( `id...
移動を実現するためにtranslateパラメータを使用しますtranslateX: X 軸に沿って移...
<br />前回の記事では、Webデザインの手順と方法を紹介しました。詳細については、前...
目次導入従来のトランジションアニメーションCSS トランジションアニメーションjsアニメーション従来...