zoukankan      html  css  js  c++  java
  • reactjs —— useCallback:联动

    原文:

    https://www.react.express/hooks/usecallback

    useCallback

    The useCallback hook lets us memoize functions. The return value will be the same function (comparable with ===) for the lifecycle of the component, unless the dependencies array changes. If the dependencies change, then a new function is returned.

    This can be useful for 2 reasons:

    • As a performance optimization, by preventing unnecessary re-renders when used with memo
    • Using a function as a dependency for another hook, since elements in the dependency array are compared with ===

    In this example, we count the number of times our Logger component runs. Since Logger is wrapped with memo, it'll only run when its props change. In the normalFunction case, the function changes every time we press the button. In the memoizedFunction case, we reuse the same function for 5 button presses, since our count5 variable returns the same value 5 times in a row.

    import React, { memo, useCallback, useState } from 'react'
    
    const Logger = memo((props) => {
      props.log()
      return null
    })
    
    export default function App() {
      const [count, setCount] = useState(0)
      const count5 = Math.floor(count / 5)
    
      const memoizedFunction = useCallback(() => {
        console.log('useCallback')
      }, [count5])
    
      const normalFunction = () => {
        console.log('normal')
      }
    
      return (
        <>
          <button
            onClick={() => {
              setCount(count + 1)
            }}
          >
            Increment {count}
          </button>
          <Logger log={memoizedFunction} />
          <Logger log={normalFunction} />
        </>
      )
    }
    

      

     

     

  • 相关阅读:
    约瑟夫环问题拓展 C/C++
    C/C++之STL简介
    详解约瑟夫环问题 C/C++
    HC-SR04超声波传感器
    TCRT5000 红外传感器
    win10的docker无法运行mysql的image,Public Key Retrieval is not allowed
    如何将docker默认的安装位置从C盘改为D盘?
    免费PDF阅读器
    A1B2B3
    动态代理
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/15267788.html
Copyright © 2011-2022 走看看