React Hooks 入门基础(详细使用)
React Hooks 是 React 16.8 的新增特性,它可以让你在函数组件中使用 state 以及其他的 React 特性。
以下是一些常用的 React Hooks:
- useState
useState 可以让函数组件拥有自己的状态。
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
useEffect 可以让你处理副作用。它就像是 componentDidMount、componentDidUpdate 和 componentWillUnmount 的组合。
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
// 类似 componentDidMount 和 componentDidUpdate
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
useContext 可以让你读取 context 的值,而不必每次都通过组件树的层层传递 props。
import React, { useContext } from 'react';
import { ThemeContext } from './theme-context';
function Button() {
const theme = useContext(ThemeContext);
return (
<button style={{ background: theme.background, color: theme.foreground }}>
I am styled by theme context!
</button>
);
}
- useReducer
useReducer 是 useState 的替代方案,它更适用于复杂状态的管理。
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 (
<div>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({type: 'increment'})}>+</button>
<button onClick={() => dispatch({type: 'decrement'})}>-</button>
</div>
);
}
- useCallback
useCallback 可以让你保存一个函数,它只会在某个依赖项改变的时候才会变化。
import React, { useCallback } from 'react';
function Example() {
const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b],
);
return <MyComponent onClick={memoizedCallback} />;
}
- us
评论已关闭