从Redux设置初始状态

3
我已经将用户名、全名和电子邮件地址存储在redux store中。我有一个组件需要电子邮件地址,以便它可以调用API获取用户组信息(使用域 - 即chase@gmail.com成为数据库查询的关键字,使用gmail.com)。该组件连接到store并使用mapStateToProps获取状态信息。
在this.stat = { }中这样做是一种反模式吗?
this.state = {
  group: '',
  owner: this.props.user.id,
  domain: this.props.user.email.split('@')[1],
  errors: {},
}

感谢您提供的所有建议。


不是一个好主意。在渲染方法中直接使用redux状态。 - Arshabh Agarwal
2个回答

5
在本地状态中复制redux状态并不是一个好的做法。 为什么呢?因为这样做不具有可伸缩性。想象一下,如果您的数据需要更改,那么您需要更新本地状态和redux状态。而且,如果redux状态发生变化,您也需要更新本地状态。这将变得非常混乱。
那怎么办呢? 您可以只使用props中的数据。实现shouldComponentUpdate方法,以确保您的数据始终是最新的。
shouldComponentUpdate(nextProps, nextState) {
  return this.props.user !== nextProps.user
}

并使用来自 props 的数据。


再次感谢@DmitriyKovalenko。 - Chase James

0

根据我的经验,我更倾向于使用它们。

如果你需要数据是特定实例的 - 使用状态。 例如:你有一个按钮组件,将数据保存在状态中,因为组件可能会被多次使用。

如果你的数据需要全局使用,以便任何其他组件都可以修改它,尤其是如果你想将数据绑定到外部源,则应使用 Redux 状态。由于数据是外部的,因此管理它变得非常简单。

链接: https://github.com/reactjs/redux/issues/1287


1
“始终建议使用Redux而不是React的内部状态。”这并不是正确的。相反,应该是相反的。如果您正在存储仅用于该组件的内部状态,则没有理由使其全局化。就像在JS中有全局和私有变量一样,如果可以将其设置为私有变量,则应该这样做。 - Martin Dawson
那是我从阅读许多讨论中推断出来的。但那些仍然只是意见,所以我的开头是错误的。已编辑答案。 - Aftab Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接