美文网首页
react - 初识hoos - useMemo和 useCal

react - 初识hoos - useMemo和 useCal

作者: 喜欢唱Hi歌的 | 来源:发表于2020-03-06 13:01 被阅读0次


hooks 中在也不需要this的概念了,并且必须放到函数组件内部最外层 最上面

引入 useMemo 和 useCallback

import React, { useMemo, useCallback } from "react";

useMemo

先看一个例子:

useMemo(() => {

    return count;

  },[count]);

 useMemo(params) 设置 第一个参数是函数

count是第二个参数 是 追踪变化的值

正常情况下 只要在当前组件组件 数据状态发生变化 当前的内部所有的逻辑 都会重新计算 并且 render一遍

比如:

const [value,setValue] = useState(''");

const [value2,setValue2] = useState(''");

const handleChange = (e) => {

setValue(e.target.value)

}

const c= () => {

return 456;

}

<div>{c()} </div>

<input type="text" value={value} onChange={(e) => handleChange(e)} />

<button onClick={() => setValue2(math.random())}></button>

一般setValue和setValue2  只要有一方点击 c函数 都会执行

这样就浪费了性能 我们只想在input值改变的时候 执行c函数 所以我们可以使用useMemo

 hook

const [value,setValue] = useState(''");

const [value2,setValue2] = useState(''");

const handleChange = (e) => {

setValue(e.target.value)

}

const c= useMemo (() => {

return 456;

},[value])

<div>{c()} </div> 

<input type="text" value={value} onChange={(e) => handleChange(e)} />

 <button onClick={() => setValue2(math.random())}></button>

这样 是有value值改变的时候 才会执行 c函数

useCallback

useMemo和useCallback 唯一区别是

useMemo 是 内部返回的是一个值

useCallback 是 内部返回的是一个当前函数

例如:

useMemo(() => {

return '2'

})

useMemo 返回的是 2;

useCallback 返回的是 () => {

return '2'

}

所以一般时候 useCallback 可以当做是class组件的shouldComponentUpdate

以下是我的demo

父组件

子组件

父组件

有写错的地方,欢迎指正,不胜感激!

笔者QQ群:148042812

相关文章

网友评论

      本文标题:react - 初识hoos - useMemo和 useCal

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