关于 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…

相关文章
相关标签/搜索