Skip to content
On this page

八股文

述说React和Vue的区别

redux主要解决什么问题?有什么优缺点?

如何划分业务组件和技术组件?

React生命周期函数

React性能优化方案有哪些?和哪个周期函数关联性较大?

为什么虚拟dom会提高性能?

DOMDiff算法?

简述flux思想React项目用过什么脚手架?

React解决了什么问题?

React的工作原理?

使用React有何优点?

展示组件(Presentationalcomponent)和容器组件(Containercomponent)之间有何不同?

类组件(Classcomponent)和函数式组件(Functionalcomponent)之间有何不同?

状态(state)和属性(props)之间有何不同?

应该在React组件的何处发起Ajax请求?

在React 中,refs 的作用是什么?

答案: Refs提供了一种访问DOM元素或React元素的方法,这在某些情况下非常有用,例如聚焦输入、测量文本或触发动画。Refs是使用React.createRef()创建的,并通过ref属性附加到React元素上。使用Refs可以访问DOM节点或在组件中存储组件实例。

何为高阶组件(higherordercomponent)?

答案:高阶组件是参数为组件,返回值为新组件的函数。HOC 不会修改传入的组件,也不会使用继承来复制其行为。相反,HOC 通过将组件包装在容器组件中来组成新组件。HOC是React中高级技巧,用来重用组件逻辑。

为什么建议传递给setState的参数是一个callback而不是一个对象?

  • 异步更新:React会将多个setState()调用合并为单个更新,以提高性能。当直接传递个对象时,React可能会对多个setState()调用进行批量处理导致只有最后一个调用生效。而通过传递一个回调函数,可以确保每个setState()都会以当前的状态为基础进行更新。

  • 避免竞态条件(RaceConditions):由于setState()是异步的,多个setState调用可能会导致竟态条件。如果多个setState()调用依赖于先前的状态,并且都是直接传递对象,可能导致不准确的结果。而通过传递一个回调函数,可以确保每个setState()都是基于最新的状态进行操作,避免了竞态条件。

  • 优化性能:通过传递回调函数,可以使用前一个状态作为参数,并返回一个新的状态对象。这样可以避免每次更新都创建一个新的状态对象,从而优化性能和内存使用。

除了在构造函数中绑定this,还有其它方式吗?

答案:使用属性初始化器语法,class 中的方法默认不会绑定this。如果忘记绑定this.handleClick 并把它传入了onClick,那么它将是一个 undefined。

怎么阻止组件的渲染?

答案:

  • 利用内联条件渲染来控制组件的渲染,不渲染组件。
  • 利用React.Component 实现componentWillMount() 方法,在方法中返回 null 或者 false。
  • 利用React.PureComponent 实现 shouldComponentUpdate() 方法,并返回 false。

当渲染一个列表时,何为key?设置key的目的是什么?

答案:

  • key是React用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识。
  • 简单的说,key应该是唯一的。
  • 推荐在循环中使用key,key会传递信息给React,但不会显示出来。
  • key应该使用字符串或者数字,也可以使用React元素作为key。
  • 通常,使用数据中的唯一标识符作为key。

为什么要设计React hook,它解决了什么问题?

答案:

  • 组件之间逻辑复用难。
  • 复杂组件变得难以理解。
  • 难以理解的class。
  • 难以记忆的生命周期。

上次更新于: