首页 > 解决方案 > 将更新程序方法置于状态或直接传递给上下文?

问题描述

当有这样的上下文时:

<MatchContext.Provider value={this.state.match}>

然后我应该把

match: {
      match: null,
      updateMatch: this.updateMatch
    },

在我的州还是这样可以?

<MatchContext.Provider value={{
          match: this.state.match.match,
          updateMatch: this.updateMatch
        }}>

我在某处读到后者对性能不利,因为它必须在每次渲染或其他东西时重新初始化对象。不记得我在哪里读到的。

标签: javascriptreactjsperformancereact-context

解决方案


你的权利,

您应该使用第一种方法并将 updateMethod 存储在组件状态中。

因为如果每次创建一个新对象,状态的内存值就会改变,并且每次组件重新渲染时都会更新上下文

每当 Provider 的 value 属性发生变化时,所有作为 Provider 后代的消费者都会重新渲染。

https://reactjs.org/docs/context.html#contextprovider


推荐阅读