react新特性hooks
2020-07-18 05:27
501 查看
什么是 Hook?
Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数。
Hook 不能在 class 组件中使用 —— 这使得你不使用 class 也能使用 React。(不推荐把你已有的组件全部重写,但是你可以在新组件里开始使用 Hook。)
可以创建你自己的 Hook 来复用不同组件之间的状态逻辑
UseState Hook
useState 会返回一对值:当前状态和一个让你更新它的函数
function ExampleWithManyStates() { // 声明多个 state 变量! const [age, setAge] = useState(42); const [fruit, setFruit] = useState('banana'); const [todos, setTodos] = useState([{ text: 'Learn Hooks' }]); // ... }
UseEffect Hook
当你调用 useEffect 时,就是在告诉 React 在完成对 DOM 的更改后运行你的“副作用”函数。由于副作用函数是在组件内声明的,所以它们可以访问到组件的 props 和 state。默认情况下,React 会在每次渲染后调用副作用函数 —— 包括第一次渲染的时候。
副作用函数还可以通过返回一个函数来指定如何“清除”副作用。
通过使用 Hook,你可以把组件内相关的副作用组织在一起(例如创建订阅及取消订阅),而不要把它们拆分到不同的生命周期函数里。
function FriendStatusWithCounter(props) { const [count, setCount] = useState(0); useEffect(() => { document.title = `You clicked ${count} times`; }); const [isOnline, setIsOnline] = useState(null); useEffect(() => { ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); }; }); function handleStatusChange(status) { setIsOnline(status.isOnline); } // ...
- 可以把 useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个函数的组合。
Hook 使用规则
Hook 就是 JavaScript 函数,但是使用它们会有两个额外的规则:
- 只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用。
- 只能在 React 的函数组件中调用 Hook。不要在其他 JavaScript 函数中调用。(还有一个地方可以调用 Hook —— 就是自定义的 Hook 中
提供了 linter 插件来自动执行这些规则
Hook 是一种复用 状态逻辑 的方式,它不复用 state 本身。事实上 Hook 的每次调用都有一个完全独立的 state —— 因此你可以在单个组件中多次调用同一个自定义 Hook。
自定义 Hook 是一个函数,其**名称以 “use” 开头**,函数内部可以调用其他的 Hook
相关文章推荐
- React的新特性 ---- Hooks ---- 的基本使用
- React新特性-Hooks
- React Hooks之useReducer
- react的Hooks
- React ES6新特性
- React-Hooks实现 componentWillUnmount使用 useEffect的第二个参数和return
- 30分钟精通React今年最劲爆的新特性――React Hooks
- react-hooks、resRef、Next
- React 16.0中的新特性——Error Boundaries及其注意点
- React-Hooks中的useEffect 代替常用生命周期函数
- React Hooks究竟是什么呢?
- React 特性剪辑(版本 16.0 ~ 16.9)
- React-Hooks中的useState多状态声明 需要注意的
- React 16 新特性
- React对象表现形式以及其它特性
- react中的hooks
- 从Preact中了解React组件和hooks基本原理
- React16.x特性剪辑
- React新特性——Protals与Error Boundaries
- React-Hooks实现计数器加法 (附完整代码)