Memo Hook

作者: percykuang | 来源:发表于2020-05-24 10:23 被阅读0次

    Memo Hook

    用于保持一些比较稳定的数据,通常用于性能优化

    useMemo和useCallback使用场景类似,但是useMemo相较于useCallback用法更加强大

    import React, { useMemo, useState } from 'react'
    
    const Item = (props) => {
      console.log('Item Render')
      return <li>{ props.value }</li>
    }
    
    
    // useMemo和useCallback功能类似
    // 区别:useCallback是对函数进行缓存,useMemo可以对任何类型进行缓存
    // useMemo()的第一个参数是一个函数,函数返回值为要缓存的对象,第二个参数是缓存依赖项,
    // 只要依赖项没有发生改变,缓存就不会发生改变。在进行多个DOM渲染时,往往可以极大的提高性能。
    const App = () => {
    
      const [range, setRange] = useState({ min: 1, max: 1000 })
      const [inputValue, setInputValue] = useState(0)
    
      const list = useMemo(() => {
        const list = []
        for (let i = range.min; i <= range.max; i++) {
          list.push(<Item key={ i } value={ i } />)
        }
        return list
      }, [range.min, range.max])
    
      return (
        <div>
          <ul>
            { list }
          </ul>
          {/* input框内容发生改变 逻辑上不应该影响list 所以对list进行缓存 list是否重新渲染
              只和range的取值范围相关
          */}
          <input type="number" value={ inputValue } onChange={ e => setInputValue(+e.target.value) } />
        </div>
      )
    }
    
    export default App
    

    相关文章

      网友评论

          本文标题:Memo Hook

          本文链接:https://www.haomeiwen.com/subject/quydahtx.html