javascript - 将更新程序方法置于状态或直接传递给上下文?
问题描述
当有这样的上下文时:
<MatchContext.Provider value={this.state.match}>
然后我应该把
match: {
match: null,
updateMatch: this.updateMatch
},
在我的州还是这样可以?
<MatchContext.Provider value={{
match: this.state.match.match,
updateMatch: this.updateMatch
}}>
我在某处读到后者对性能不利,因为它必须在每次渲染或其他东西时重新初始化对象。不记得我在哪里读到的。
解决方案
你的权利,
您应该使用第一种方法并将 updateMethod 存储在组件状态中。
因为如果每次创建一个新对象,状态的内存值就会改变,并且每次组件重新渲染时都会更新上下文
每当 Provider 的 value 属性发生变化时,所有作为 Provider 后代的消费者都会重新渲染。
推荐阅读
- mips - 在不使用 syscall 10 的情况下终止 mips 程序(最后需要在 $v0 中存储其他内容)
- prometheus - 如何将标签值提取到 Grafana 中的变量?
- java - 如何在 Nodejs 上解密 Java AES
- erlang - Erlang Cowboy,牛仔缓存页面吗?
- ruby-on-rails - 将 vscode 中的调试配置为 Ruby on Rails 和 Docker
- python - 无法导入 deepfoo 模块?
- haskell - 在 Haskell 中绘制游戏板 - 问题
- python-3.x - Python 正则表达式:处理不匹配的更好方法?
- javascript - 在 ReactJS 中获取 api 数据时登录失败?
- python - defaultdict 更改顺序中的元素