在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    前端-React: Hook的秘密

    前端-React: Hook的秘密

    大家知道React Hook中存在依賴數(shù)組,它的存在是為了控制組件是否變化而需要重新渲染。那么它是怎么判斷這個(gè)依賴的值是否有變化的呢?

    我發(fā)現(xiàn)沒有文檔介紹這個(gè)判斷count變化到底是怎么做的。所以我們只能自己在源碼里找了。下面的鏈接里可以找到areHookInputsEqual方法,

    https://github.com/facebook/react/blob/v18.1.0/packages/react-reconciler/src/ReactFiberHooks.new.js#L323

    這里就是判斷依賴是否相等源碼,原來它沒有使用==或===來判斷,而是使用了Object.is函數(shù), 我們都知道==和===的區(qū)別,那為什么用Object.is呢?以下來自MDN,里面說三種相等比較模式,嚴(yán)格相等(===),非嚴(yán)格相等(==),同值相等(Object.is)https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness#a_model_for_understanding_equality_comparisons

    例如:

  • +0, -0 and 0 :===返回相等, Object.is 返回不等??赡躉bject.is就是為了數(shù)學(xué)上的正確性
  • NaN === NaN : Object.is 相等, === 不等, 這應(yīng)該就是相同值的正確性
  • 所以這就是React選擇了Object.is的原因。

    另外,React不會(huì)做深比較,它只是比較它們是否是相同的對(duì)象。===和Object.is在對(duì)象比較上都是一樣的結(jié)果。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    (0)
    用戶投稿
    上一篇 2022年6月23日 06:15
    下一篇 2022年6月23日 06:15

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息