📅  最后修改于: 2023-12-03 14:59:05.902000             🧑  作者: Mango
ReactJS 是现代前端开发中最流行的 JavaScript 库之一。面试官通常会问到关于 ReactJS 的问题,以确认应聘者对该库的熟悉程度。下面列举了 7 个最常见的 ReactJS 面试问题和答案,希望对应聘者有所帮助。
ReactJS 是一个用于构建用户界面的 JavaScript 库。它采用了组件化的开发方式,将视图拆分成小的、独立的组件,并用这些组件组合成复杂的用户界面。ReactJS 由 Facebook 开发,并于 2013 年开源发布。
ReactJS 组件有多个生命周期方法,可以在组件的生命周期中执行相应的操作。以下是 ReactJS 支持的生命周期方法:
refs 可以用来获取组件或 DOM 元素的引用。在 ReactJS 中,可以使用 ref 属性来关联组件或 DOM 元素。例如,可以使用 ref 属性来获取表单元素的值或操作 DOM 元素。
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.inputRef = React.createRef();
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
console.log(this.inputRef.current.value);
}
render() {
return (
<div>
<input type="text" ref={this.inputRef} />
<button onClick={this.handleClick}>Click</button>
</div>
);
}
}
在上面的代码中,使用 React.createRef() 创建 inputRef 对象,并将其传递给 input 元素的 ref 属性。当点击按钮时,将使用 inputRef.current.value 获取 input 字段的值。
state 和 props 都是组件的数据源。它们的区别在于:
当 state 或 props 发生变化时,组件会重新渲染。
虚拟 DOM 是 ReactJS 的核心概念之一。它是一个轻量级的 DOM 抽象,ReactJS 使用它来进行高效的 DOM 操作。ReactJS 通过比较虚拟 DOM 的差异,只更新需要更新的部分,从而提高性能。
是的,每个 ReactJS 组件必须实现 render 方法。render 方法返回组件的虚拟 DOM 树。根据虚拟 DOM 的 diff 算法,ReactJS 会借助于该方法对组件进行高效地更新。
高阶组件是一个函数,它接受一个组件作为参数,并返回一个新的组件。高阶组件通常用于增强组件的功能。例如,可以使用高阶组件来添加验证逻辑或者使用 context 等功能。
function withAuth(WrappedComponent) {
class WithAuth extends React.Component {
render() {
if (!isAuthenticated()) {
return <Redirect to="/login" />;
}
return <WrappedComponent {...this.props} />;
}
}
return WithAuth;
}
const MyComponent = withAuth(props => {
return <div>Hello, {props.user.name}!</div>;
});
在上面的代码中,withAuth 是一个高阶组件,它会判断用户是否已经验证,并在未验证的情况下重定向到登录页面。MyComponent 组件是通过 withAuth 调用产生的,它可以访问传递给原始组件的 props。