zoukankan      html  css  js  c++  java
  • useMemo

    useMemo 主要用来解决使用 React Hooks 产生的无用渲染的性能问题,function 的形式声明组件,失去了 shouldComponentUpdate(在组件更新之前)这个生命周期,也就是说我们没有办法通过组件更新前条件来决定组件是否更新。而且,在函数组件中,也不再区分 mount 和 update 两个状态,意味着函数组件的每一次调用都会执行内部的所有逻辑,就带来了非常大的性能损耗。 useMemo 和 useCallback 都是解决上述性能问题的。

    import React , {useState,useMemo} from 'react'
    
    function HMemo(){
        const [count,setCount] = useState(0)
        const [age,setAge] = useState(18)
        return (
            <div>
                <Son count={count}></Son>
                <button onClick={()=>setCount(count+1)}>点击次数:+</button>
                <button onClick={()=>setAge(age+1)}>年龄:{age}</button>
            </div>
        )
    }
    
    function Son({count}){ //props解构
        function changeNum(num){
            console.log(`${num}x10=${num}*10`)
        }
    
        const changeCount = changeNum(count)
        return (
            <div>
                <h3>点击次数是:{count}</h3>
                <div>{changeCount}</div>
            </div>
        )
    }
    
    export default HMemo;

    父组件调用了子组件,子组件中定义了一个 changeNum 方法,打印 num*10 后的值,此时,点击 次数 按钮或者年龄 按钮,changeNum 方法 每次都会执行,这就是性能的损耗。当我们点击 年龄 按钮时,changNum 方法不应该执行,只有在点击 次数 按钮时才能执行

    使用 useMemo,然后给子组件 changeCount 传递第二个参数,参数匹配 成功,才会执行

     

    点击年龄,不再打印 (不会执行 printCount 方法),但是点击次数按钮,执行两次???

  • 相关阅读:
    集合类学习之ArrayList源码解析
    集合类学习之Hashmap机制研究
    基于 HTTP/2 的全新 APNs 协议
    tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
    TCP、UDP、IP 协议分析
    /proc/net/tcp中各项参数说明
    linux系统limit知识
    随机行
    nf_conntrack被启用导致服务故障
    HTTP 2.0的那些事
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/13130162.html
Copyright © 2011-2022 走看看