React 基础面试题, 在 React 中,super 和 superprops 有什么区别?
React 基础面试题, 在 React 中,super 和 superprops 有什么区别?
QA
Step 1
Q:: 在 React 中,super() 和 super(props)
有什么区别?
A:: 在 React 类组件的构造函数中,super() 用于调用父类的构造函数,super(props) 则是在调用父类构造函数的同时,将 props 传递给父类的构造函数。通常在使用 React 类组件时,需要在构造函数中调用 super(props),以确保 this.props 能够在构造函数中被正确访问到。如果你不需要在构造函数中访问 props,super() 就足够了。但为了保持代码的规范性和一致性,super(props)
是更推荐的做法。
Step 2
Q:: 什么是 React 的生命周期方法?它们的作用是什么?
A:: React 的生命周期方法是在组件的不同阶段被调用的一系列方法。主要分为三类:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。在挂载阶段,常用的方法包括 constructor()、componentDidMount();在更新阶段,有 shouldComponentUpdate()、componentDidUpdate() 等;在卸载阶段,则是 componentWillUnmount()
。这些方法允许开发者在组件的特定时刻执行特定的操作,例如初始化状态、发送网络请求或清理资源。
Step 3
Q:: React 的 setState()
是同步还是异步的?
A:: React 的 setState() 是异步的。这是因为 React 会批量更新 state,以优化性能。调用 setState() 后,React 并不会立即更新 this.state,而是将这些调用收集起来,进行批量更新。这使得开发者不能依赖 setState() 之后立即获取更新后的状态。为了应对这一点,setState() 可以接受一个回调函数,该函数会在状态更新完成后执行,或者使用 setState()
的函数形式来确保更新逻辑的正确性。
Step 4
Q:: 什么是 React 中的虚拟 DOM?为什么它很重要?
A:: 虚拟 DOM 是 React 的一个核心概念,它是一种轻量级的 JavaScript 对象,用于描述 DOM 结构。React 使用虚拟 DOM 来追踪 DOM 变化,当状态或属性发生变化时,React 会重新计算虚拟 DOM 并与之前的虚拟 DOM 进行比较。这种差异计算(diffing)过程可以快速确定实际 DOM 需要更新的部分,然后最小化地更新真实 DOM。虚拟 DOM 的引入极大提高了 React 应用的性能,特别是在处理复杂 UI 时。
Step 5
Q:: React 中的 keys 在列表渲染中有什么作用?
A:: 在 React 中,key 是用于追踪哪些列表中的项目发生了变化、添加或移除的一个特殊属性。keys 应该是独一无二的,通常使用项目的唯一标识符(如 id)。它们的存在可以帮助 React 更高效地更新和渲染列表,而不是重新渲染整个列表。没有正确使用 keys 或使用不唯一的 keys 可能导致 React 在重新渲染时出现问题,甚至会影响性能。