關於 React 的幾個問題總結

我在 github 上新建了一個倉庫 日問,天天一道面試題,有關前端,後端,devops以及軟技能,促進職業成長,敲開大廠之門,歡迎交流前端

01 有沒有使用過 react hooks,它帶來了那些便利

在 Issue 中交流與討論: Issue 地址react

依個人見解,React hooks 主要解決了狀態以及反作用難以複用的場景,除此以外,他對我最大的好處就是在 Console 中不會看到重重疊疊相同名字的組件了(HOC)。git

目前使用感受最爽的兩個hook,都是關於請求的。一個是 apollo-clientuseQuery,一個是 swrgithub

02 React 中,cloneElement 與 createElement 各是什麼,有什麼區別

在 Issue 中交流與討論: Issue 地址面試

首參不同,直接上 API編程

React.cloneElement(
  element,
  [props],
  [...children]
)

React.createElement(
  type,
  [props],
  [...children]
)
複製代碼

03 如何使用 react hooks 實現 useFetch 請求數據

更多描述: 好比設計成 `useFetch` 這種形式,它的 API 應該如何設計

在 Issue 中交流與討論: Issue 地址小程序

能夠參考 How to fetch data with React Hooks?後端

04 什麼是 virtual DOM,它的引入帶了什麼好處

在 Issue 中交流與討論: Issue 地址瀏覽器

  • 虛擬 DOM 最大的優點在於抽象了本來的渲染過程,實現了跨平臺的能力,而不單單侷限於瀏覽器的 DOM,能夠是安卓和 IOS 的原生組件,能夠是近期很火熱的小程序,也能夠是各類 GUI。服務器

  • vdom 把渲染過程抽象化了,從而使得組件的抽象能力也獲得提高,而且能夠適配 DOM 之外的渲染目標。

  • Virtual DOM 在犧牲(犧牲很關鍵)部分性能的前提下,增長了可維護性,這也是不少框架的通性。 實現了對 DOM 的集中化操做,在數據改變時先對虛擬 DOM 進行修改,再反映到真實的 DOM中,用最小的代價來更新DOM,提升效率(提高效率要想一想是跟哪一個階段比提高了效率,別隻記住了這一條)。

  • 打開了函數式 UI 編程的大門。

  • 能夠渲染到 DOM 之外的端,使得框架跨平臺,好比 ReactNative,React VR 等。

  • 能夠更好的實現 SSR,同構渲染等。這條實際上是跟上面一條差很少的。

  • 組件的高度抽象化。

虛擬 DOM 的缺點

  • 首次渲染大量 DOM 時,因爲多了一層虛擬 DOM 的計算,會比 innerHTML 插入慢。
  • 虛擬 DOM 須要在內存中的維護一份 DOM 的副本(更上面一條其實也差很少,上面一條是從速度上,這條是空間上)。
  • 若是虛擬 DOM 大量更改,這是合適的。可是單一的,頻繁的更新的話,虛擬 DOM 將會花費更多的時間處理計算的工做。因此,若是你有一個DOM 節點相對較少頁面,用虛擬 DOM,它實際上有可能會更慢。但對於大多數單頁面應用,這應該都會更快。

05 react hooks 中如何模擬 componentDidMount

在 Issue 中交流與討論: Issue 地址

useEffect,把第二個參數即依賴的狀態,設置爲 []

useEffect(callback, [])
複製代碼

06 若是使用 SSR,能夠在 created/componentWillMount 中訪問 localStorage 嗎

在 Issue 中交流與討論: Issue 地址

不能夠,created/componentWillMount 時,還未掛載,代碼仍然在服務器中執行,此時沒有瀏覽器環境,所以此時訪問 localStorage 將會報錯

07 如何實現一個 react hook,你有沒有本身寫過一個

在 Issue 中交流與討論: Issue 地址

各類優秀實現=》github.com/streamich/r…

相關文章
相關標籤/搜索