React面试题汇总
发布人:shili8
发布时间:2025-01-18 11:13
阅读次数:0
**React 面试题汇总**
作为一个前端开发者,掌握 React 是非常重要的。以下是 React 面试题的汇总,涵盖了常见的问题和一些更复杂的场景。
### 一、基本概念1. **什么是 React?**
* React 是一个用于构建用户界面的 JavaScript 库。
2. **React 的主要特点是什么?**
* 组件化、虚拟 DOM、JSX 等。
3. **什么是组件?**
*一个独立的 UI 部分,通常是一个函数或类。
### 二、组件1. **如何定义一个 React 组件?**
* 使用 `function` 或 `class` 定义一个组件。
2. **什么是 props?**
* 组件之间传递数据的方式。
3. **如何使用 props?**
* 在父组件中传递 props 给子组件,子组件通过 `props` 接收。
jsx// ParentComponent.jsimport React from 'react';
import ChildComponent from './ChildComponent';
function ParentComponent() {
return (
<div>
<h1>Parent Component</h1>
<ChildComponent name="John" age={30} />
</div>
);
}
export default ParentComponent;
// ChildComponent.jsimport React from 'react';
function ChildComponent(props) {
console.log(props); // {name: "John", age:30}
return (
<div>
<h2>Child Component</h2>
<p>Name: {props.name}</p>
<p>Age: {props.age}</p>
</div>
);
}
export default ChildComponent;
4. **什么是 state?**
* 组件内部的数据。
5. **如何使用 state?**
* 使用 `this.state` 或 `useState` Hook。
jsx// Counter.jsimport React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count +1)}>+</button>
</div>
);
}
export default Counter;
### 三、事件处理1. **如何监听组件的事件?**
* 使用 `onClick`、`onMouseOver` 等属性。
2. **如何阻止事件冒泡?**
* 使用 `event.stopPropagation()`。
jsx// Button.jsimport React from 'react';
function Button() {
const handleClick = (event) => {
console.log('Button clicked!');
event.stopPropagation();
};
return (
);
}
export default Button;
### 四、列表和键值对1. **如何渲染一个列表?**
* 使用 `map()` 或 `Array.prototype.forEach()`。
2. **如何渲染一个键值对列表?**
* 使用 `Object.keys()` 或 `Object.entries()`。
jsx// List.jsimport React from 'react';
function List() {
const items = [
{ id:1, name: 'Item1' },
{ id:2, name: 'Item2' },
{ id:3, name: 'Item3' },
];
return (
-
{items.map((item) => (
- {item.name} ))}
### 五、表单1. **如何创建一个表单?**
* 使用 `form` 元素和 `input` 元素。
2. **如何处理表单事件?**
* 使用 `onChange`、`onSubmit` 等属性。
jsx// Form.jsimport React, { useState } from 'react';
function Form() {
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const handleSubmit = (event) => {
event.preventDefault();
console.log('Form submitted!');
console.log({ name, email });
};
return (
<form onSubmit={handleSubmit}>
<label>
Name:
<input type="text"
value={name}
onChange={(event) => setName(event.target.value)}
/>
</label>
<label>
Email:
<input type="email"
value={email}
onChange={(event) => setEmail(event.target.value)}
/>
</label>
<button type="submit">Submit</button>
</form>
);
}
export default Form;
### 六、其他1. **如何使用 React Hooks?**
* 使用 `useState`、`useEffect` 等 Hook。
2. **如何使用 Context API?**
* 使用 `React.createContext()` 和 `Provider` 组件。
jsx// Theme.jsimport React from 'react';
const theme = {
colors: {
primary: '#333',
secondary: '#666',
},
};
export default theme;
jsx// App.jsimport React, { useState } from 'react';
import ThemeContext from './ThemeContext';
import Button from './Button';
function App() {
const [theme, setTheme] = useState({
colors: {
primary: '#333',
secondary: '#666',
},
});
return (
<ThemeContext.Provider value={theme}>
<div>
<h1>App</h1>
<Button />
</div>
</ThemeContext.Provider>
);
}
export default App;
以上就是 React 面试题的汇总。这些问题涵盖了基本概念、组件、事件处理、列表和键值对、表单等方面。通过掌握这些知识,你将能够更好地应对面试中的挑战。

