useState钩子很棒。我主要使用useState钩子来初始化某些状态,我还将函数传递给子组件来更改状态。然而,我意识到我开始在我的父页面组件中使用太多的useState钩子。这看起来和感觉都是错误的,因为我开始在父页面组件中有大约6-10个useState钩子。
如果不显示代码,有没有更好的方法来做到这一点?也许是一个更好的实践,或者是一个更好的重构方法。
谢谢
useState钩子很棒。我主要使用useState钩子来初始化某些状态,我还将函数传递给子组件来更改状态。然而,我意识到我开始在我的父页面组件中使用太多的useState钩子。这看起来和感觉都是错误的,因为我开始在父页面组件中有大约6-10个useState钩子。
如果不显示代码,有没有更好的方法来做到这一点?也许是一个更好的实践,或者是一个更好的重构方法。
谢谢
2条答案
按热度按时间wh6knrhe1#
每当你遇到这样的问题时,你应该首先看看你是否可以把你的组件分成多个小的。然而,有些情况下,这不是一个选择。在这些情况下,我建议使用useReducer。
iibxawm42#
我相信优化useState的最好方法是解耦不必要的关系。无论你是否使用useState在react组件内部,将它们与useContext、useReducer或任何其他方法共享。将所有内容放在一个对象树中并不能优化性能。因此,将上述内容更改为单个useReducer只会将问题转移到其他地方。
最优化的解决方案是只耦合必要的依赖项。即使用多个状态处理程序-即多个上下文提供程序,或多个useReducers,zustand或做一些聪明的新useSignal,它本质上是要做同样的事情,只听最小量的差异。
如果需要,您仍然可以通过中央useEffect在这些多个状态之间订阅。
一个简单的useContext示例:
有一些更整洁的选项没有嵌套的提供程序,但这个例子是针对“上下文”的,请原谅这个双关语。
一个更好,更干净的解决方案可能是使用信号,多个zustand状态或原生js代理,只监听你的react组件关心的一件事,以防止不必要的重新渲染。