个人博客 个人博客
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

董先亮

前端react开发
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

  • React

    • 三方库
    • useEffect与useLayoutEffect
    • useState与useEffect原理
    • memo
      • useCallback
      • useMemo
      • useRef
    • 前端框架
    • React
    NeverStop1024
    2023-02-16
    目录

    memo

      react中,当组件中state发生改变时,组件会重新渲染,子组件也会跟着一起渲染,memo用来缓存组件,仅当props变化时,才会重新渲染该组件,这样会避免些重复无效渲染。

    import React, {memo, useState} from 'react';
    import {Card, Input, InputNumber} from "antd";
    
    function Index() {
      const [keywords, setKeywords] = useState<string>('');
      const [age, setAge] = useState<number>(1);
    
      return (
          <div>
            <Card>
              <Input placeholder="请输入关键词" onChange={(e) => setKeywords(e.target.value)} style={{ width: 200 }} />
              <Person name={keywords}/>
            </Card>
            <Card>
              <InputNumber placeholder="请输入年龄" onChange={(v) => setAge(Number(v))} style={{ width: 200 }} />
              输入值为:{age}
            </Card>
          </div>
      );
    }
    
    interface Options {
      name: string
    }
    
    const Person: React.FC<Options> = memo(({name}) => {
      console.log('Person组件进行渲染了')
      return (
          <div>
            查询用户姓名为:{name}
          </div>
      )
    })
    export default Index
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34

    # 与useMemo联系

    React.memo是一个高阶组件,useMemo是一个hook

    # 注意

    1. 只适用于函数式组件,class组件不可用
    2. 如果不依赖props,则只会渲染一次

    # 应用场景

    memo用来优化子组件的无效重复渲染问题

    编辑 (opens new window)
    上次更新: 2023/02/16
    useState与useEffect原理
    useCallback

    ← useState与useEffect原理 useCallback→

    最近更新
    01
    mock使用
    07-12
    02
    websocket即时通讯
    07-12
    03
    前端面试题
    07-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2023 NeverStop1024 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式