我刚刚开始使用React和Redux,我偶然发现了一个棘手的问题。
假设我有一个通用的React组件(让我们称之为 FriendSelector ),可以在网站上的许多地方使用。 FriendSelector 需要有一系列好友对象才能运作。
我是否使用ReactRedux库中的connect()使 FriendSelector 成为容器组件,并使用mapStateToProps从商店中获取所需内容
或
我是否可以从使用 FriendSelector 作为道具的任何组件手动发送数据列表,如下所示:
let friends = this.context.store.getState().friends
<MyComponent>
<FriendSelector friends={friends} />
</MyComponent>
或者这是不好的做法?
我个人认为选项#1不是很好,因为我必须确保我的商店有一个包含数组的朋友属性,否则该组件将无法正常工作。
但是当我考虑选项#2时,看起来它不遵循单向数据流,因为只允许组件从父级获取其支持?
答案 0 :(得分:0)
将组件连接到商店还是从父组件获取所需的属性完全取决于您。这取决于您的应用程序架构。
阅读关于演示与容器组件的this popular post。
通过直接用getState()
查询状态来考虑喂食组件通常被认为是不好的做法。这就是redux暴露connect
方法的原因。