当前位置:首页 > React

react hooks如何用

2026-02-11 21:31:25React

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 操作。它接受一个函数和一个依赖数组。

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' ? 'black' : 'white' }}>Click me</button>;
}

useReducer

useReduceruseState 的替代方案,适用于复杂状态逻辑。它接受一个 reducer 函数和初始状态。

react hooks如何用

import React, { useReducer } from 'react';

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, { count: 0 });

  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</button>
    </div>
  );
}

自定义 Hooks

自定义 Hooks 允许将组件逻辑提取到可重用的函数中。

import { useState, useEffect } from 'react';

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

  useEffect(() => {
    fetch(url)
      .then(response => response.json())
      .then(data => setData(data));
  }, [url]);

  return data;
}

function UserProfile() {
  const user = useFetch('https://api.example.com/user');

  return user ? <div>{user.name}</div> : <div>Loading...</div>;
}

通过以上方法,可以充分利用 React Hooks 简化代码并提高可维护性。

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

相关文章

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

如何监控react性能

如何监控react性能

使用 React Profiler API React 16.5 及以上版本内置了 Profiler API,可直接测量组件渲染时间。通过 <React.Profiler> 包裹目标组件,…

react项目如何启动

react项目如何启动

启动React项目的步骤 确保已安装Node.js(建议版本12以上)和npm/yarn。可通过以下命令检查版本: node -v npm -v 全局安装create-react-app脚手架工具(…