旧ライフサイクルと比較して
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 のバックア...
前回の記事では、Vue で画像の切り抜きや拡大・縮小、回転を実現する方法を紹介しました。今回は、アイ...
この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する方法に関する3番目の記事...
目次1. パッケージ化コマンドを追加する2. パッケージ化されたコードを実行する3. パッケージ化し...
Centos にプロジェクトをデプロイするときに奇妙な問題が見つかりました。データベース接続で例外...
目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...
序文1. この記事で使用したツールは、https://github.com/gianlucabore...
スクリーン リーダー ソフトウェアの操作ページについて話しているとき、彼はフロントエンドの学生たちに...
TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...
目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...
この記事の例では、WeChatアプレットの日付と時刻コンポーネントの具体的なコードを参考までに共有し...
効果は以下のとおりです。ページジャンプボタンをクリックした後 対応する値はページ b で取得できます...
Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...
この記事では、カルーセルアニメーションを実現するためのVueコンポーネントの具体的なコードを例として...
現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...