当前位置:首页 > React

react如何记忆

2026-02-11 11:31:21React

记忆状态(useState 和 useRef)

在 React 中,useState 用于存储和更新组件的状态。每次状态更新都会触发组件的重新渲染。useRef 则用于存储可变值,但不会触发重新渲染,适合存储不需要触发 UI 更新的数据。

import { useState, useRef } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // 触发重新渲染
  const countRef = useRef(0); // 不触发重新渲染

  const increment = () => {
    setCount(count + 1);
    countRef.current += 1;
  };

  return (
    <div>
      <p>State Count: {count}</p>
      <p>Ref Count: {countRef.current}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
}

记忆计算结果(useMemo)

useMemo 用于缓存计算结果,避免在每次渲染时重复计算。只有当依赖项发生变化时,才会重新计算。

react如何记忆

import { useMemo } from 'react';

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

  return <div>{sortedList.join(', ')}</div>;
}

记忆函数(useCallback)

useCallback 用于缓存函数,避免在每次渲染时重新创建函数。只有当依赖项发生变化时,才会重新创建函数。

import { useCallback } from 'react';

function ParentComponent() {
  const handleClick = useCallback(() => {
    console.log('Button clicked');
  }, []);

  return <ChildComponent onClick={handleClick} />;
}

function ChildComponent({ onClick }) {
  return <button onClick={onClick}>Click Me</button>;
}

记忆组件(React.memo)

React.memo 是一个高阶组件,用于缓存组件的渲染结果。只有当组件的 props 发生变化时,才会重新渲染。

react如何记忆

import { memo } from 'react';

const MemoizedComponent = memo(function MyComponent({ text }) {
  return <div>{text}</div>;
});

function ParentComponent() {
  return <MemoizedComponent text="Hello" />;
}

记忆表单输入(受控组件)

受控组件通过将表单输入的值存储在状态中,实现记忆功能。每次输入变化时更新状态,从而保持输入值的记忆。

import { useState } from 'react';

function Form() {
  const [inputValue, setInputValue] = useState('');

  const handleChange = (e) => {
    setInputValue(e.target.value);
  };

  return (
    <form>
      <input type="text" value={inputValue} onChange={handleChange} />
    </form>
  );
}

记忆滚动位置(useEffect 和 useRef)

通过 useEffectuseRef 可以记忆滚动位置,并在组件重新渲染时恢复滚动位置。

import { useEffect, useRef } from 'react';

function ScrollComponent() {
  const scrollRef = useRef(null);

  useEffect(() => {
    const savedPosition = localStorage.getItem('scrollPosition');
    if (savedPosition && scrollRef.current) {
      scrollRef.current.scrollTop = savedPosition;
    }

    return () => {
      if (scrollRef.current) {
        localStorage.setItem('scrollPosition', scrollRef.current.scrollTop);
      }
    };
  }, []);

  return (
    <div ref={scrollRef} style={{ height: '200px', overflow: 'auto' }}>
      {/* 长列表内容 */}
    </div>
  );
}

标签: 记忆react
分享给朋友:

相关文章

如何react页面

如何react页面

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

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…