Shu*_*ala 3 reactjs react-native redux react-hooks
我正在考虑使用 React hooks [useReducer, useContext] 和 context api 来代替 redux。话虽如此,我希望我的状态在结构上有点复杂。让我们看看结构是这样的
state = {
key1: true,
key2: {
key3: [],
key4: ''
}
}
Run Code Online (Sandbox Code Playgroud)
我清楚的是 redux 和 context api 都允许我创建复杂的结构。在使用 React hooks 的情况下,我可以很好地使用 Provider、Consumer/useContext 将我的存储状态值传递给我的所有组件。
Redux 给我带来的更多好处是,如果key4更新了任何特定的键 , ,那么可以帮助我不用使用 中的 connect 函数重新渲染整个应用程序树react-redux。这是我的查询。
我们怎样才能使 React hooks 和 context api 不重新渲染我的整个应用程序,这是一个主要的性能错误?
这是仅通过反应上下文无法实现的。当然,您可以使用 useMemo 来欺骗您的 Provider 的直接子级,这样就不会重新渲染,但除此之外:每次上下文值的任何属性发生更改时,所述上下文的所有使用者都会重新渲染,无论他们是否使用了特定的财产与否。您无法仅针对某些子项退出上下文重新渲染。
一旦集成到 React 中,这可能会在未来发生变化useContextSelector,但就目前而言,这只是标准的 React 行为,没有办法解决这个问题。
您可以在本文中找到有关“上下文与真实状态管理解决方案”的更多信息。
目前,如果您只是想减少样板文件,那么最好阅读现代 redux或研究其他成熟的状态管理库,如 mobx 或 recoil。但是,如果不完全重新实现其中之一,您将无法仅凭上下文实现这一目标 - 这有什么意义呢?
| 归档时间: |
|
| 查看次数: |
2947 次 |
| 最近记录: |