【发布时间】:2015-06-21 11:29:46
【问题描述】:
我正在尝试理解 Flux 和 Reactjs。
考虑以下一个非常简单的场景:
您有一个输入很少的表单。当用户提交表单时,
ActionCreator.publishAnnouncement(this.state.announcement);
在我的表单组件中被调用。 这是 publishAnnouncement 方法的样子:
var publishAnnouncement = function (announcement) {
AnnouncementAPI.publishAnnouncement(
announcement,
successCallback,
failureCallback
)
};
AnnouncementAPI 只是 AJAX http POST 调用的包装器。它需要两个回调——成功和失败。
现在:我需要在屏幕上显示通知/toast - 指示成功或失败。 你会如何以 Flux 的方式做到这一点?
我正在考虑创建通知组件并将其呈现在我的表单中。 像下面这样:
<Notification title={this.state.notification.title} message={this.state.notification.title} visible={this.state.notification.visibility} // ?? onTimeExceeded ?? />
但是我该如何处理这些回调呢?我应该创建 NotificationStore 来监听 ANNOUNCEMENT_PUBLISHING_SUCCEEDED 和 ANNOUNCEMENT_PUBLISHING_FAILED 事件吗?作为对这些事件的反应,store 会发出 CHANGE 事件,因此我的 Notification 会更新。
但即使我这样做了,我应该如何指示我的通知显示/隐藏?或者更糟糕的是,在 2 秒后出现并隐藏?
我在GitHub 上看到的组件很少,每个组件都使用 refs 等,我个人不喜欢这些。
总结一下: 您将如何实现这一点?或者这样的项目是否存在?如果有,我在哪里可以找到它?
【问题讨论】:
-
Facebook 自己在他们的 Flux 架构初始视频中谈到了使用 React 和 Flux 在 Facebook 中实现通知(用户消息)。
-
refs是推荐的实现方式。对不起,你的性格需要改变;-) -
但是 render 不应该是描述组件在某个时间点的状态的函数吗?如果是这样,那么使用这样一个带有 refs 的组件会完全破坏它。
-
@BenjaminGruenbaum 拥有用于用户通知的商店是有意义的。创建一个只是为了填充弹出组件状态 - 可能不是?
标签: javascript reactjs reactjs-flux flux