React面试

78 阅读1分钟

一、何时以及为什么 setstate() 会批量执行?为什么不直接更新 this.state ?

setState() 在 React 中是用于更新组件状态的方法。React 中的状态更新是异步的,而且在一些情况下,setState() 可能会被批量执行。这是为了优化性能而设计的,避免不必要的重新渲染。

具体来说,当你在一个生命周期方法(如 componentDidMountcomponentDidUpdate)中调用 setState() 时,React 会将这些状态更新批量处理,然后进行一次重新渲染。这样可以减少重新渲染的次数,提高性能。

另外,React 还提供了一种函数形式的 setState(),接受一个回调函数作为参数。这个回调函数会接收前一个状态作为参数,这样可以确保在进行状态更新时使用最新的状态。这也是一种方式来批量处理状态更新。

this.setState((prevState) => {
  // 在这里基于 prevState 进行状态更新
  return { /* 更新的状态 */ };
});

直接更新 this.state 是不推荐的,因为直接操作状态可能会破坏 React 的状态管理机制,导致不可预测的结果,而且可能会绕过 React 的性能优化机制,导致不必要的重新渲染。因此,最好使用 setState() 来进行状态更新,以确保 React 可以正确地管理组件状态。

二、jsx中遍历数组渲染代码需要使用map,为什么不使用forEach?

  • JSX语法最终是要return返回html标签或对应内容的,而数组的遍历方法中forEach没有返回值,重在执行;map可以设置返回值。所以,在jsx中只能使用map方法进行遍历