当前位置:首页 > React

react hooks如何用

2026-01-23 17:31:01React

使用 React Hooks 的基本方法

React Hooks 是 React 16.8 引入的功能,允许在函数组件中使用状态和其他 React 特性。以下是几种常用 Hooks 的用法。

useState

useState 用于在函数组件中添加状态管理。它返回一个状态值和一个更新状态的函数。

import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

useEffect

useEffect 用于处理副作用,如数据获取、订阅或手动 DOM 操作。它可以替代生命周期方法如 componentDidMountcomponentDidUpdatecomponentWillUnmount

react hooks如何用

import React, { useState, useEffect } from 'react';

function DataFetcher() {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data));
  }, []); // 空依赖数组表示仅在组件挂载时运行

  return <div>{data ? data.message : 'Loading...'}</div>;
}

useContext

useContext 用于在组件中访问 React 的 Context,避免多层传递 props。

import React, { useContext } from 'react';

const ThemeContext = React.createContext('light');

function ThemedButton() {
  const theme = useContext(ThemeContext);

  return <button style={{ background: theme === 'dark' ? '#333' : '#eee' }}>Themed Button</button>;
}

useReducer

useReduceruseState 的替代方案,适用于复杂状态逻辑。

react hooks如何用

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 (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>+</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>-</button>
    </div>
  );
}

useMemo 和 useCallback

useMemo 用于缓存计算结果,useCallback 用于缓存函数。

import React, { useMemo, useCallback } from 'react';

function ExpensiveComponent({ list }) {
  const sortedList = useMemo(() => list.sort(), [list]);

  const handleClick = useCallback(() => {
    console.log('Clicked');
  }, []);

  return (
    <div>
      <ul>
        {sortedList.map(item => <li key={item}>{item}</li>)}
      </ul>
      <button onClick={handleClick}>Click Me</button>
    </div>
  );
}

自定义 Hooks

可以创建自定义 Hooks 来复用状态逻辑。

import { useState, useEffect } from 'react';

function useWindowWidth() {
  const [width, setWidth] = useState(window.innerWidth);

  useEffect(() => {
    const handleResize = () => setWidth(window.innerWidth);
    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return width;
}

function ResponsiveComponent() {
  const width = useWindowWidth();
  return <div>Window width: {width}px</div>;
}

注意事项

  • Hooks 只能在函数组件的顶层调用,不能在循环、条件或嵌套函数中使用。
  • 自定义 Hook 的名称应以 use 开头,以便 React 识别其为 Hook。
  • useEffect 的依赖数组需谨慎处理,避免不必要的重新渲染或遗漏依赖。

标签: 如何用react
分享给朋友:

相关文章

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

react 如何修改state

react 如何修改state

修改 state 的基础方法 在 React 中,state 的修改必须通过 setState 方法(类组件)或 state 更新函数(函数组件)。直接修改 state 会导致组件不会重新渲染,且可能…

小白如何搭建react

小白如何搭建react

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网下载安装包(https://nodejs.org/),选择 LTS 版本。安装完成后,终端运行以下命令验证版…

webstorm如何运行react

webstorm如何运行react

运行 React 项目的方法 在 WebStorm 中运行 React 项目需要确保项目已正确配置,并且依赖项已安装。以下是具体操作步骤: 确保项目依赖已安装 打开终端(Terminal),导航到项…

react如何实现混入

react如何实现混入

在React中实现混入(Mixin)功能可以通过以下几种方式实现,React官方已不推荐使用传统的React.createClass混入方式,但可通过高阶组件或自定义Hook替代。 高阶组件(HOC…

react如何修改值

react如何修改值

修改 React 组件的值 在 React 中修改值通常涉及状态管理。根据组件的类型(类组件或函数组件)和状态管理方式(本地状态或全局状态),方法有所不同。 使用 useState(函数组件) 在函…