【问题标题】:if multiple pieces of state data always change together should i only keep one in state and the rest in class vars?如果多条状态数据总是一起变化,我应该只将一个保持在状态中,将其余的保持在类变量中吗?
【发布时间】:2020-04-17 01:32:23
【问题描述】:

很难准确理解在普通 React 中要保持什么状态。

假设我有一个顶级组件<App>(保存所有状态)和一些其他嵌套的显示组件(显示传递的道具但没有状态)

似乎我的应用程序可以通过将几乎所有数据移动到类变量并保持少数几个状态来正常运行。

我的问题是:如果多条数据总是一起变化,我应该只选择一个保持状态并将其他数据放在类变量中,因为触发一个变化将重新渲染 <App> 组件 - 包括显示类变量的嵌套组件?

【问题讨论】:

    标签: reactjs state


    【解决方案1】:

    如果您要同时更改大量状态,您可以将一些数据存储在实例变量中并只使用一种状态,但这会非常令人困惑,并且以后很容易搞砸(例如,更新一个类变量而不更新状态变量)。您可以轻松地将多个项目存储在 state 中,或者将一个大对象存储在 state 中并更新该对象的属性。

    但是,如果您有很多不同的状态更新,您可能需要考虑使用useReducer 来管理状态。从该页面:

    当您有涉及多个子值的复杂状态逻辑或下一个状态取决于前一个状态时,useReducer 通常比 useState 更可取。 useReducer 还允许您优化触发深度更新的组件的性能,因为您可以向下传递调度而不是回调。

    最后一个想法:我建议任何如果独立更新的数据都应该触发重新渲染,您可能应该将其保持在状态。你永远不知道将来会发生什么,这可能会导致一些奇妙的错误。 :)

    希望有帮助!

    【讨论】:

    • 感谢您的回复。通过 props 传递数据的过程对我来说很奇怪。感觉数据和处理程序函数都卡在顶级父组件()中。但我仍然是一个新手,希望事情变得更加清晰
    • 如何组织代码由您决定。事物可以根据需要合并或分布。这一切都归结为哪些组件需要哪些数据以及您希望如何分配功能/责任。祝你好运,找出你的风格!
    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多