reactjs - React Hooks - 如何避免在每次渲染时重新声明函数
问题描述
在反应课上,我会写这样的东西
class Myclass extends React.Component {
handleUpdate = info => {
//do the update
}
render() {
return (
<SomeMarkup>
<SomeComponent onUpdate={this.handleUpdate} />
</SomeMarkup>
)
}
}
如果使用一个函数,我可以写以下
function MyFunction() {
function handleUpdate(info) {
// do the update
}
return (
<SomeMarkup>
<SomeComponent onUpdate={handleUpdate} />
</SomeMarkup>
)
}
...但是我会在每次渲染时重新声明一个函数。是否有任何技巧可以记住渲染之间的处理函数?还是应该将处理程序移出渲染范围?(将它移出渲染范围需要我显式传递更多参数,因为我不会直接访问函数范围。)
解决方案
这正是useCallback
适用的场景。该函数仍然每次都用 声明useCallback
,但返回的函数是记忆化的,因此如果它作为属性传递给子级,子级将收到一致的函数,除非由于依赖项更改而必须更改它。
请在此处查看我最近的相关答案,详细演示如何useCallback
工作:
Trouble with simple example of React Hooks useCallback
这是另一个相关的答案:React Hooks useCallback 导致孩子重新渲染
推荐阅读
- google-chrome - 尝试上传简历时获取虚假路径
- bash - Makefile 错误:配方在第一个目标之前开始
- java - 有没有在java中转换数学公式的方法
- google-sheets - Google 表格 - IF 语句公式
- python - 在 PySpark 中查找连续的每月注册期
- streamlit - cv2 和 streamlit lib 的 Streamlit 部署错误
- c# - 如何验证控制器中收到的自定义对象?
- reactjs - 反应构建 - 未找到:错误:无法解析“缓冲区”
- iis - 服务帐户无法从本地计算机存储中读取证书
- r - 如何在 R 中的多个列中为 grep 选择多个值?