React(3)
发布人:shili8
发布时间:2025-02-20 14:09
阅读次数:0
**React入门指南**
---
###1. React介绍React是一种用于构建用户界面的JavaScript库。它由Facebook在2013年推出,目前已成为前端开发的主流框架之一。
####什么是React?
React是一个视图层库(View Layer Library),主要负责渲染UI组件和处理用户交互事件。它不涉及业务逻辑或数据存储。
#### 为什么使用React?
1. **易于学习和使用**:React的API设计简单,易于理解和使用。
2. **高效的性能**:React通过虚拟DOM(Virtual DOM)实现了高效的渲染和更新机制。
3. **可组合性**:React允许你轻松地创建复杂UI组件,并且可以重用它们。
###2. React基本概念#### 组件(Component)
在React中,组件是构建UI的基本单位。每个组件都有自己的状态和行为。
#### props(属性)
props是从父组件传递给子组件的数据。它是只读的,并且不会被修改。
#### state(状态)
state是组件内部的数据存储。它可以被修改,用于保存组件的当前状态。
###3. React基本API#### `JSX`语法JSX是一种用于描述UI结构的语法。它允许你使用HTML-like标签来创建React组件。
jsx// 示例代码function Hello(props) {
return <div>Hello, {props.name}!</div>;
}
#### `createElement()`方法`createElement()`方法用于创建一个虚拟DOM元素。
javascriptimport React from 'react'; const element = React.createElement( 'h1', null, 'Hello, World!' );
#### `render()`方法`render()`方法用于将组件渲染到页面上。
javascriptimport React from 'react';
import ReactDOM from 'react-dom';
function Hello() {
return <div>Hello, World!</div>;
}
ReactDOM.render(<Hello />, document.getElementById('root'));
###4. 组件的生命周期#### `componentDidMount()`方法`componentDidMount()`方法用于在组件渲染完成后执行一些初始化操作。
javascriptimport React from 'react';
class Hello extends React.Component {
componentDidMount() {
console.log('Hello, World!');
}
render() {
return <div>Hello, World!</div>;
}
}
#### `componentDidUpdate()`方法`componentDidUpdate()`方法用于在组件更新完成后执行一些操作。
javascriptimport React from 'react';
class Hello extends React.Component {
componentDidUpdate() {
console.log('Hello, World!');
}
render() {
return <div>Hello, World!</div>;
}
}
#### `componentWillUnmount()`方法`componentWillUnmount()`方法用于在组件卸载前执行一些操作。
javascriptimport React from 'react';
class Hello extends React.Component {
componentWillUnmount() {
console.log('Hello, World!');
}
render() {
return <div>Hello, World!</div>;
}
}
###5. 组件的状态和props#### `useState()` Hook`useState()` Hook用于在组件中创建一个状态。
javascriptimport React from 'react';
function Hello() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count +1)}>+</button>
</div>
);
}
#### `useEffect()` Hook`useEffect()` Hook用于在组件渲染完成后执行一些操作。
javascriptimport React from 'react';
function Hello() {
React.useEffect(() => {
console.log('Hello, World!');
}, []);
return <div>Hello, World!</div>;
}
#### `useContext()` Hook`useContext()` Hook用于在组件中获取一个上下文。
javascriptimport React from 'react';
const ThemeContext = React.createContext();
function Hello() {
const theme = React.useContext(ThemeContext);
return <div style={{ color: theme.color }}>Hello, World!</div>;
}
###6. 组件的事件处理#### `onClick()`事件`onClick()`事件用于在组件点击时执行一些操作。
javascriptimport React from 'react';
function Hello() {
function handleClick() {
console.log('Hello, World!');
}
return (
<div onClick={handleClick}>
Hello, World!
</div>
);
}
#### `onChange()`事件`onChange()`事件用于在组件值改变时执行一些操作。
javascriptimport React from 'react';
function Hello() {
function handleChange(event) {
console.log('Hello, World!');
}
return (
<input type="text" onChange={handleChange} />
);
}
###7. 组件的样式#### `className`属性`className`属性用于在组件中设置一个类名。
javascriptimport React from 'react';
function Hello() {
return (
<div className="hello">
Hello, World!
</div>
);
}
#### `style`属性`style`属性用于在组件中设置一个样式。
javascriptimport React from 'react';
function Hello() {
return (
<div style={{ color: 'red' }}>
Hello, World!
</div>
);
}
###8. 组件的高级特性#### `ref`属性`ref`属性用于在组件中获取一个DOM元素。
javascriptimport React from 'react';
function Hello() {
const ref = React.createRef();
return (
<div>
<input type="text" ref={ref} />
</div>
);
}
#### `memo`函数`memo`函数用于在组件中缓存一个值。
javascriptimport React from 'react';
function Hello() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count +1)}>+</button>
</div>
);
}
#### `useCallback` Hook`useCallback` Hook用于在组件中缓存一个函数。
javascriptimport React from 'react';
function Hello() {
const [count, setCount] = React.useState(0);
const handleClick = React.useCallback(() => {
console.log('Hello, World!');
}, []);
return (
<div>
<p>Count: {count}</p>
<button onClick={handleClick}>+</button>
</div>
);
}
#### `useReducer` Hook`useReducer` Hook用于在组件中使用一个reducer函数。
javascriptimport React from 'react';
function Hello() {
const [state, dispatch] = React.useReducer((state, action) => {
switch (action.type) {
case 'INCREMENT':
return state +1;
default:
return state;
}
},0);
return (
<div>
<p>Count: {state}</p>
<button onClick={() => dispatch({ type: 'INCREMENT' })}>+</button>
</div>
);
}
###9. 组件的最佳实践#### 使用 `createContext` 函数创建一个上下文。
javascriptimport React from 'react'; const ThemeContext = React.createContext();
#### 使用 `useState` Hook管理组件的状态。
javascriptimport React from 'react';
function Hello() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count +1)}>+</button>
</div>
);
}
#### 使用 `useEffect` Hook在组件渲染完成后执行一些操作。
javascriptimport React from 'react';
function Hello() {
React.useEffect(() => {
console.log('Hello, World!');
}, []);
return <div>Hello, World!</div>;
}
#### 使用 `useContext` Hook获取一个上下文。
javascriptimport React from 'react';
const ThemeContext = React.createContext();
function Hello() {
const theme = React.useContext(ThemeContext);
return <div style={{ color: theme.color }}>Hello, World!</div>;
}
#### 使用 `useCallback` Hook缓存一个函数。
javascriptimport React from 'react';
function Hello() {
const [count, setCount] = React.useState(0);
const handleClick = React.useCallback(() => {
console.log('Hello, World!');
}, []);
return (
<div>
<p>Count: {count}</p>
<button onClick={handleClick}>+</button>
</div>
);
}
#### 使用 `useReducer` Hook使用一个reducer函数。

