React Hooks的设计思想和基本使用
React Hooks 是 React 16.8 的新增特性,它可以让你在函数组件中使用 state 以及其他的 React 特性。
设计哲学:
- 使用了 Hooks 的组件可以在组件之间复用状态逻辑。
- 通过在函数组件内部调用 Hooks,我们可以在不需要类的情况下可以使用 state 以及其他的 React 特性。
基本使用:
- useState:用于添加 state 到函数组件。
import React, { useState } from 'react';
function Example() {
// 声明一个名为 'count' 的 state 变量
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
- useEffect:用于处理副作用。
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
// 类似于类组件中的生命周期函数
// 使用空数组[],只在组件挂载时执行一次
useEffect(() => {
document.title = `You clicked ${count} times`;
}, []);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
- useContext:用于访问 context。
import React, { useContext } from 'react';
import { ThemeContext } from './theme-context';
function Button() {
const theme = useContext(ThemeContext);
return (
<button style={{ backgroundColor: theme.background }}>
I am styled by theme context!
</button>
);
}
- useReducer:用于管理 useState 的复杂状态。
import React, { useReducer } from 'react';
function Example() {
const initialState = {count: 0};
// 定义一个 Reducer 函数,来处理状态的更新
function reducer(state, action) {
switch (action.type) {
case 'increment':
return {count: state.count + 1};
case 'decrement':
return {count: state.count - 1};
default:
throw new Error();
}
}
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
Count: {state.count}
<button onClick={() => dispatch({type: 'increment'})}>+</button>
<button onClick={() => dispatch({type: 'decrement'})}>-</button>
</>
);
}
以上是 React Hooks 的一些基本使用方法,它们可以帮助你构建功能更加丰富和更好地管理状态的组件。
评论已关闭