React的hook

React Hooks 是 React 16.8 版本引入的新特性,它允许你在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 的引入极大地简化了 React 组件的逻辑,并使得函数组件更加强大和灵活。

以下是一些常用的 React Hooks:

  1. 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>
);
}

2.useEffect

useEffect 类似于 class 组件中的 componentDidMountcomponentDidUpdate 和 componentWillUnmount 这三个生命周期方法的组合。它用于执行副作用操作,如数据获取、订阅或手动更改 DOM。

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>
);
}
3.useContext

useContext 允许你订阅 React 的 Context。这使得你可以在不明确地通过组件树逐层传递 props 的情况下访问某些值。

import React, { useContext } from 'react';
import MyContext from './MyContext';
function MyComponent() {
const value = useContext(MyContext);
// ...
}

4. useReducer

对于包含多个子状态的大型组件,使用 useReducer 可以更好地管理状态。它类似于 Redux 的 reducer,但专为组件的本地状态设计。

import React, { useReducer } from 'react';
const initialState = { count: 0 };
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();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
Count: {state.count}
<button onClick={() => dispatch({ type: 'increment' })}>+</button>
<button onClick={() => dispatch({ type: 'decrement' })}>-</button>
</>
);
}
5. useCallback
useCallback 返回一个记忆的回调函数。只有当依赖项发生变化时,它才会返回一个新的回调函数。这有助于避免在渲染时创建不必要的回调函数,从而提高性能。
6. useMemo
useMemo 返回一个记忆的值。它只在某个依赖项改变时重新计算。这有助于避免在每次渲染时都执行高开销的计算。
7. useRef

useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内保持不变。
8. useLayoutEffect

其 API 与 useEffect 相同,但它会在所有的 DOM 变更之后同步调用 effect。可以使用它来读取 DOM 布局并同步触发重渲染。在浏览器执行绘制之前,useLayoutEffect 内部的更新计划将被同步刷新。
9. useDebugValue

useDebugValue 可以用于在 React Developer Tools 中为自定义 Hooks 添加标签。这对于调试复杂的组件树非常有用。

这些 Hooks 为 React 开发者提供了更灵活、更强大的工具来构建复杂的应用。你可以单独使用它们,也可以将它们组合起来以创建自定义 Hooks,从而进一步抽象和重用组件逻辑。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值