<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      getDerivedStateFromProps 詳解

      getDerivedStateFromProps 是 React 生命周期中的一個靜態方法,主要用于在組件接收到新的 props 時更新 state。這個方法在組件的初始渲染和后續的每次更新(即每次接收到新的 props 或 state)時都會被調用。

      詳解

      • 靜態方法:這意味著你不能在這個方法中使用 this 關鍵字。它的第一個參數是新的 props,第二個參數是當前的 state。

      • 返回值getDerivedStateFromProps 必須返回一個對象來更新 state,或者返回 null 表示不需要更新 state。

      • 作用:這個方法的主要作用是確保組件的 state 總是與 props 保持一致。這是一個非常罕見的需求,因為通常我們希望 props 只是初始數據來源,而不是 state 的來源。然而,在某些特殊的場景中,可能需要根據 props 的變化來更新 state。

      import React, { useId } from 'react';
      import ReactDOM from 'react-dom/client';
      import './index.css';
      import App from './App';
      import reportWebVitals from './reportWebVitals';
      //import PagerContainer from './components/PagerContainer';
      import CheckBoxGroup from './components/common/CheckBoxGroup';
      
      const root = ReactDOM.createRoot(document.getElementById('root'));
      class Test1 extends React.Component {
          constructor(props) {
              super(props);
              this.state = {
                  count: 0
              }
          }
          render(){
              return (
                  <div>
                      <h1 onClick={()=>this.setState((state)=>({count:state.count+1}))}>父:{this.state.count}</h1>          
                      <Test2 num={this.state.count} />
                  </div>
              )
          }
      }
      class Test2 extends React.Component {
          //設置初始state的數據來源于父組件的props屬性
          state = {
              count: this.props.num
          }
          constructor(props) {
              super(props);
          }
          static getDerivedStateFromProps(props, state) {
              console.log('初始渲染和活躍更新階段都會執行')
              console.log(props, state);
              return {
                  count: props.num
              }
          }
          componentDidMount(){
      
          }
          render() {
            return (
              <div>
                  <h1 onClick={()=>this.setState((state)=>({count:state.count+1}))}>這是子組件:{this.state.count}</h1>
              </div>
            )
          }
      }
      root.render(<Test1 />);
      
      // If you want to start measuring performance in your app, pass a function
      // to log results (for example: reportWebVitals(console.log))
      // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
      reportWebVitals();

      這個實例的作用是每當Test2組件接收到新的props.num時,都會將state.count的值更新為props.num的值

       

      注意事項

      1. 避免濫用getDerivedStateFromProps 應該謹慎使用,因為它可能會導致代碼難以理解和維護。通常情況下,直接使用 props 而不是從 props 中派生 state 是更好的做法。

      2. 性能問題:頻繁地在 getDerivedStateFromProps 中更新 state 可能會導致性能問題,因為這可能會觸發不必要的重新渲染。

      3. 替代方案:如果你發現自己經常需要使用 getDerivedStateFromProps,可以考慮重新審視你的組件結構,或者使用其他生命周期方法來實現相同的功能。例如,componentDidUpdate 提供了一個更好的地方來處理 props 的變化,而不會觸發不必要的重新渲染。

      posted @ 2025-02-11 10:45  飛奔的龜龜  閱讀(396)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 91精品国产午夜福利| 特级做a爰片毛片免费看无码| 99www久久综合久久爱com| 91精品国产老熟女在线| 少妇性bbb搡bbb爽爽爽欧美| 国产精品中文字幕在线| 怡红院一区二区三区在线| 亚洲日本VA午夜在线电影| 国产亚洲精品自在久久| 亚洲熟妇色自偷自拍另类| 亚洲国产精品一二三区| 久久婷婷五月综合色和啪| 蜜桃亚洲一区二区三区四| 亚洲天堂激情av在线| 粗了大了 整进去好爽视频| 丝袜美腿亚洲综合第一页| 国产亚洲AV电影院之毛片| 肇庆市| 日本一区二区三区视频版| 色狠狠色噜噜AV一区| 国产网友愉拍精品视频手机 | 日韩女同在线二区三区| 安仁县| 产综合无码一区| 蜜芽亚洲AV无码精品国产午夜| 国产成人无码免费视频在线| 国产熟女50岁一区二区| 性男女做视频观看网站| 亚洲欧美日韩综合久久久| 国产又色又爽又黄的免费软件 | 中国少妇人妻xxxxx| 久久综合久色欧美综合狠狠 | 日韩精品人妻中文字幕| 中文字幕日韩人妻一区| 老司机午夜精品视频资源| 亚洲一区二区三区十八禁| 中国亚州女人69内射少妇| 最新中文字幕av无码专区不 | 国产粉嫩一区二区三区av| 18禁免费无码无遮挡不卡网站 | 国产成人高清亚洲综合|