【发布时间】:2019-10-02 18:25:45
【问题描述】:
我很好奇如何从服务器管理初始状态。例如,我们在页面上有一个按钮,只有在用户获得授权时才应该启用该按钮。我看到两个选项,都有缺点:
在
ComponentWillMount()中,从服务器获取信息。缺点:不再是无国籍的。在由
Provider包裹的根对象中,在那里获取状态。缺点:国家的倾倒场;如果用户不访问特定页面,则可能永远不需要。
是否有获得初始状态的最佳实践方法?我希望让我的组件保持无状态,但如果它们都需要一些初始状态,我不知道如何保持它们无状态。
** 编辑 **
正如一位同事指出的,使用ComponentWillMount() 并不意味着它不再是无状态的。我只需调度我的操作,状态将在 Redux 中,而不是在组件本身中。所以#1 听起来像是要走的路。
【问题讨论】:
-
保持每个组件无状态的魅力是什么?此外,使用
ComponentWillMount挂钩来触发初始化 应用程序状态的操作,我不一定会考虑使组件本身“有状态”。特别是如果它位于<App />中。 -
保持每个组件无状态不一定是魅力。这更像是尽可能地遵循最佳实践。如果我需要每个组件的某种状态,那么 none 将是无状态的。据我所知,无状态的好处是代码更少,测试更简单,并且没有
this绑定。那为什么不试试呢? -
话虽如此,我想我开始同意你的看法了。拥有带状态的组件可能比在一个地方加载 15 页的初始数据要好,尤其是当用户不需要大部分数据时。
标签: reactjs redux react-redux