中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react?16.8版本新特性及對react開發的影響是什么

發布時間:2022-03-15 10:10:59 來源:億速云 閱讀:131 作者:iii 欄目:開發技術

本篇內容主要講解“react 16.8版本新特性及對react開發的影響是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“react 16.8版本新特性及對react開發的影響是什么”吧!

    Facebook團隊對社區上的MVC框架都不太滿意的情況下,開發了一套開源的前端框架react,于2013年發布第一個版本。

    react最開始倡導函數式編程,使用function以及內部方法React.creactClass創建組件,之后在ES6推出之后,使用類組件Class構建包含生命周期的組件。

    react 16.8版本更新

    react16.8版本更新標志性的信息,是引入了hooks以及相關的一些api。

    useState:
    
    // 函數式組件初始化state和更改state:
    
    const Counter = () =>{
    const [num,setNum] = userState(0);
    return(
      <div>
          <div>{count}</div>
           <button onClick={()=>setCount(num+ 1)}>+</button>
      </div>
      );
    };

    useEffect

    userEffect副作用函數的組件,不僅取代了組件初始化,組件掛載成功,組件狀態更新這三個階段的生命周期函數

    同時還能在這個階段處理一些內存隊列:包括定時器等,解決了在16.8版本之前,在組件移除之后,異步隊列沒有被移除,占據內存導致頁面卡頓等問題

    useEffect(() => {
      compoment.subscribe(id);
      return () => {
          compoment.unsubscribe(theId)    //取消訂閱
      }
    });

    react16.8版本更新解決了什么問題

    組件復用更便捷

    在更新的版本之前,復用組件,更多的是使用高階組件,以及封裝的組件,通過傳參和父子組件通信的形式去復用,

    更新之后,可以通過函數式組件返回狀態的形式,去接受組件向外暴露的組件內容。

    實例

    //舊版本
    function children() {
      return function (WrappedComponent) {
        return class HighComponent extends React.Component {
          state = {
            childProps: xxx
          };
          render() {
            const { childProps } = this.state;
            return <WrappedComponent childProps={childProps} />;
          }
        };
      };
    }
    class App extends Component{
      render(){
    /**
     * 調用高階組件
     */
        const { childProps} = this.props;
        return (
          <children
            columns={[...]}
          // tableProps包含pagination, onChange, dataSource等屬性。
            {...childProps}
          />
        )
      }
    }
    // 新版本
    function children() {
      const [childProps, setChildProps] = useState(xxx);
      return childProps;
    }
    
    function App {
        const { childProps} = useTable();
        return (
          <Table 
            columns={[...]}
          // tableProps包含pagination, onChange, dataSource等屬性
            {...childProps}
          />
        )
    }
    • 在我們上面提到的,清除定時器,以及解決在生命周期變化過程中,消除占用內存的隊列等

    • 函數式組件出現了狀態管理,在以往的react函數式編程過程中,react只能被動去接收一個從父組件傳遞下來的一個props狀態,在hooks更新之后,可以使用hooks更新的方法,提高組件的功能性以及擴展性,在函數式組件當中擁有了像class組件一樣可控生命周期

    • useEffect取代了一部分生命周期函數,從代碼量的角度來說,簡化了代碼,解決了在class組件在編寫過程中,需要不斷使用bind或者箭頭函數去綁定當前的this,更專注于當前狀態的管理

    hooks和react diff算法

    • react diff這里不做深入講解,簡單來說diff算法是react以及vue2.0版本當中:

    內部有一套虛擬dom的算法,在組件渲染過程中,對每個dom渲染一個key值,

    在state狀態更新過程時,對應渲染的虛擬dom會去對比真實渲染在頁面上的dom元素,如果某個節點對比時發現有更改,對應更改當前虛擬dom節點的數據狀態,再渲染真實的dom到頁面當中。

    兩者的聯系:

    • hooks在更新之后,減少了對生命周期函數的執行,同時更新狀態更為迅速,這樣在虛擬dom執行過程中,提高diff執行速度

    • hooks使得函數式組件有了自己內部的狀態,在函數式組件執行過程中,不需要等待裝載到父組件當中,自己可以更新狀態,所以減少了部分dom的深度,在頁面渲染過程中,也算是變相提高了頁面渲染速度。

    到此,相信大家對“react 16.8版本新特性及對react開發的影響是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    巴东县| 永安市| 彝良县| 奇台县| 白水县| 防城港市| 漳浦县| 新巴尔虎右旗| 区。| 叙永县| 全南县| 芒康县| 望江县| 兰坪| 农安县| 保靖县| 元江| 新平| 四平市| 吉水县| 芦溪县| 迭部县| 澄迈县| 保定市| 兴化市| 德兴市| 大田县| 呼和浩特市| 临江市| 涿州市| 海丰县| 福州市| 衡水市| 军事| 阳东县| 长子县| 沙洋县| 丰台区| 湘阴县| 东城区| 扎鲁特旗|