我正在一个状态快速变化和许多广播的网站上工作,我正在尝试使用钩子和上下文创建我自己的全局状态管理。我发现避免无用渲染的唯一解决方案是为每个状态创建两个上下文,一个用于状态更新程序方法,另一个用于状态本身。我最终有几十个上下文。
它看起来不是一个好的设计,但我没有任何其他想法,我仍然认为有可能创建一个复杂的 React 应用程序,而无需第三方库来处理状态管理。
你有什么建议吗?谢谢
我正在一个状态快速变化和许多广播的网站上工作,我正在尝试使用钩子和上下文创建我自己的全局状态管理。我发现避免无用渲染的唯一解决方案是为每个状态创建两个上下文,一个用于状态更新程序方法,另一个用于状态本身。我最终有几十个上下文。
它看起来不是一个好的设计,但我没有任何其他想法,我仍然认为有可能创建一个复杂的 React 应用程序,而无需第三方库来处理状态管理。
你有什么建议吗?谢谢
首先要注意,Context API 不是状态管理工具。
目前 ( v17
) 没有对 Context 消费者的救助。
如果你不知道这是什么意思,看看这个答案
你是对的,你需要有多个 Context 提供者来减少无用的渲染。
至于你的另一个问题:
“是否可以在没有第三方库的情况下创建一个复杂的 React 应用程序来处理状态管理?”
我正在 Facebook 上做一个非常复杂的项目,我们只使用 Context API 来管理它(我们也有无用渲染的情况,这没关系),所以基本上答案是“是”。
作为继续“仅上下文”方式或任何状态管理解决方案之前的一般建议,您应该分析应用程序性能,主要是过早优化,并且“无用”渲染毫无意义。