react总结之hooks
React Hooks 是 React 16.8 的新增特性,它可以让你在函数组件中使用 state 以及其他的 React 特性,而无需编写 class。
以下是一些常用的 React Hooks 的例子:
useState
: 用于添加函数组件的 state。
import React, { useState } from 'react';
function Example() {
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);
// 类似于 class 组件的生命周期函数 componentDidMount 和 componentDidUpdate:
useEffect(() => {
// 更新 document 的 title
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 './ThemeContext';
function Button() {
const theme = useContext(ThemeContext);
return (
<button style={{ backgroundColor: theme.background }}>
I am styled by theme context!
</button>
);
}
useReducer
: 用于管理复杂的 state 逻辑。
import React, { useReducer } from 'react';
function Example() {
const [state, dispatch] = useReducer(reducer, initialState);
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();
}
}
return (
<>
Count: {state.count}
<button onClick={() => dispatch({type: 'increment'})}>+</button>
<button onClick={() => dispatch({type: 'decrement'})}>-</button>
</>
);
}
useCallback
: 用于记住 callback 函数的变化。
import React, { useCallback } from 'react';
function Example() {
const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b],
);
return <button onClick={memoizedCallback}>Click me</button>;
}
useMemo
: 用于记住计算结果的变化。
import React, { useMemo } from 'react';
function Example() {
const mem
评论已关闭