【问题标题】:Error in epic with redux-observable and rxjsredux-observable 和 rxjs 的史诗错误
【发布时间】:2020-12-30 13:35:58
【问题描述】:

我正在尝试创建一个使用 rxfire 从 Firestore 获取数据的史诗。在每次发出值时,都需要调度一个动作。我的代码如下所示:

const fetchMenu = (action$, _state$) => {
  return action$.pipe(
    ofType(Types.FETCH_MENU_REQUESTED),
    flatMap((async ({ resID }) => {
      const firestore = firebase.firestore();
      const menuRef = firestore.collection('menus').where('resID', '==', resID);
      return collectionData(menuRef, 'id')
      .pipe(
        map(val => {
          return Creators.fetchMenuSuccess(val);
        })
      )
    }
    )),
  );
};

但是,我收到了错误 Actions must be plain objects. Use custom middleware for async actions.

据我了解,pipe 运算符将我的值包装在一个 observable 中,这就是我收到错误的原因,但我不确定该怎么做才能只返回操作。我对 rxjs 还是有点陌生​​,所以非常感谢任何帮助。

【问题讨论】:

    标签: firebase react-redux rxjs redux-observable rxfire


    【解决方案1】:

    您的flatMap 回调是异步的,这意味着它不会返回发出fetchMenuSuccess 操作的可观察对象,而是返回可解析为可观察对象的承诺。 Rx 会自动解包 promise,这意味着从这个史诗返回的 observable 会发出 observable,而不是订阅它们并发出自己的值。

    删除 async 关键字应该可以修复它。

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 2018-06-20
      • 1970-01-01
      • 2021-01-11
      • 2021-11-13
      • 2019-01-23
      • 2017-04-22
      • 2019-02-24
      • 2018-01-14
      相关资源
      最近更新 更多