【发布时间】:2015-11-06 15:28:05
【问题描述】:
据我了解 Redux 是将 UI 的所有状态保存在一个存储中(以便能够轻松地重现某些状态并且没有副作用)。您可以通过触发减少器的触发操作来操纵状态。
我目前正在编写一个类似博客的小型应用程序,您可以在其中简单地创建和编辑帖子。我有一个用于创建帖子的对话框,大致上App 组件的render 方法返回如下内容:
<div>
<AppBar ... />
<PostFormDialog
addPost={actions.addPost}
ref="postFormDialog" />
<PostList
posts={posts}
actions={actions} />
</div>
我的问题是:对话框的状态(打开或关闭)应该是 App 组件状态对象的一部分吗?因此,是否应该通过操作触发打开和关闭对话框,而不是执行以下操作:
onTriggerCreatePostDialog(e) {
this.refs.postFormDialog.show();
}
onTriggerCreatePostDialog 是通过“创建”按钮上的某个点击侦听器触发的。
我觉得通过一个动作来做这件事有点奇怪,因为它引入了一种“间接”。
但是,假设我想将对话框重用于编辑操作,我必须能够从组件结构中较深的元素打开对话框,例如从作为子组件的 Post 组件打开对话框。 PostList 组件。我可以做的是通过props 属性将onTriggerCreatePostDialog 函数向下传递,但这对我来说似乎很麻烦......
所以最终也是关于不处于直接父子关系的组件之间的通信。还有其他选择吗?我应该以某种方式使用全局事件总线吗?我目前很不确定。
【问题讨论】:
标签: javascript reactjs redux