Javascript 什么';在epic中发送动作的正确方式是什么?

Javascript 什么';在epic中发送动作的正确方式是什么?,javascript,redux,redux-observable,Javascript,Redux,Redux Observable,在redux observable epic内部分派operationReset()的正确方法是什么 我应该导入实际存储并使用它吗 这可能会引发一个更大的问题,即如何使用回调进行通知,因为这意味着您将发送一个不可JSON序列化的函数作为操作的一部分 我假设您仍然希望匹配react通知系统。有一种方法可以使用Observable.创建: (action$, store) => action$.pipe( ofType(OPERATION_FAILURE), mergeM

在redux observable epic内部分派
operationReset()
的正确方法是什么

我应该导入实际存储并使用它吗


这可能会引发一个更大的问题,即如何使用回调进行通知,因为这意味着您将发送一个不可JSON序列化的函数作为操作的一部分

我假设您仍然希望匹配react通知系统。有一种方法可以使用
Observable.创建

(action$, store) =>
  action$.pipe(
    ofType(OPERATION_FAILURE),
    mergeMap(() =>
      Observable.create(observer => {
        observer.next(
          error({
            title: "Operation Failed",
            message: "Oops! It didn't go through.",
            action: {
              label: "Try Again",
              autoDismiss: 0,
              callback: () => {
                // Send off a reset action
                observer.next(operationReset());
                // Close off this observable
                observer.complete();
              },
              // If the notification is dismissed separately (can they click an x?)
              onRemove: () => observer.complete()
            }
          })
        );
      })
    )
  );

注意:我仍然不想将回调作为操作的一部分发送。有趣的是,我的一个项目也使用了通知系统组件——我们有epics,可以添加通知并根据操作清除它们。所有的动作都是纯粹的,通知系统是一个受控的副作用。

那里的
错误
功能是什么?通知动作@KyleKelley
(action$, store) =>
  action$.pipe(
    ofType(OPERATION_FAILURE),
    mergeMap(() =>
      Observable.create(observer => {
        observer.next(
          error({
            title: "Operation Failed",
            message: "Oops! It didn't go through.",
            action: {
              label: "Try Again",
              autoDismiss: 0,
              callback: () => {
                // Send off a reset action
                observer.next(operationReset());
                // Close off this observable
                observer.complete();
              },
              // If the notification is dismissed separately (can they click an x?)
              onRemove: () => observer.complete()
            }
          })
        );
      })
    )
  );