- useMemo缓存数据
- useCallback缓存函数
- 两者是ReactHooks的常见优化策略
给Child传了函数,且该函数如果没有使用useCallback,那么Child的memo会失效
import {memo, useCallback, useMemo, useState} from "react";
const Child = memo((props) =>{
console.log('child render ... ')
return <div>
this is child {props.info.name }, {props.info.age}
<input type='text' onChange={props.onChange}/>
</div>
})
function UseMemoDemo(){
console.log('parent render ... ')
const [count,setCount] = useState(0)
const [name,setName] = useState('fux')
const info = useMemo(()=>{
return {
name,
age:20
}
},[name])
const onChange = useCallback(e =>{
console.log('onChange: ',e.target.value)
},[])
return <div>
<button onClick={()=>setCount(count+1)}>+</button>count:{count}
<br/>
<Child info={info} onChange={onChange}/>
</div>
}
export default UseMemoDemo