我正在构建一个中等规模的React / Redux应用程序,而且我对React非常熟悉 - 但是,Redux仍然有点难以理解。
我知道我可以使用Redux中的connect()
将任何组件或容器连接到Redux状态。但是,我不清楚何时这样做 - 是否基于复杂性?需要将多少道具传递给子组件?
我可以使用哪些因素来确定何时使用connect()
?
编辑提供一个例子:-----
例如,我想在我的应用中为用户添加一个消息区域,尤其是显示未读消息数量的徽章。我只想connect()
我想要展示徽章的任何组件吗?
答案 0 :(得分:11)
我不同意将所有组件状态存储在商店中。我更喜欢在redux存储中只包含对应用程序整体重要的数据,因此其他组件可以从这个全局可访问的共享数据中受益。
在商店中拥有特定于组件的状态,这只对这个组件有用,是一个过度且无用的IMO。
答案 1 :(得分:4)
您可以在redux中存储应用的状态。如何构建状态树由您决定。您可以将状态树视为一个巨大的javascript对象。使用redux,理想情况下,您可以将最小的组件状态存储在您的反应组件本身中,而是将其移动到redux状态树。
例如,如果您获取了一些用户数据,则可以将其存储在redux状态,以便连接的组件现在可以访问该数据。您还可以获得描述某些UI组件的更精细和存储状态。描述下拉列表的州的一部分可能如下所示
{
myDropdown: {
isOpen: false,
options: [
'apple',
'orange'
]
}
}
我认为开始合并redux是一个很好的观点,那就是当你的应用程序达到一定程度时,你的组件不再只是“愚蠢的”#34;显示数据的组件。
编辑: 尝试回答问题"何时应该连接我的组件?"。我自己也在努力,但还没有很好的答案。现在我通常连接一个组件,如果我通过许多祖先组件传递道具专门为该组件。因此,连接将完全避免使用样板代码。
答案 2 :(得分:2)
REDUX官方页面:
用于确定应将哪种数据放入Redux的一些通用经验法则:
但是...这意味着在大多数关闭的应用程序中,我应该存储在Redux存储中的唯一数据是登录的用户数据。。这是唯一影响所有屏幕的实体(角色,登录名,用户设置)。
通常的应用程序不需要记住在屏幕,缓存,历史记录之间输入的数据。
非常令人困惑,所以我真的不太确定要在Redux商店中放置什么...