redux-observableエピックでRxJSobservableをチェーンするにはどうすればよいですか?

チーメン

私は最近、仕事のためにredux-observablesとRxJSを学び始めたところです。Reduxではグローバルにアラートが設定されています。アラートを設定できるようにしたいのですが、設定した期間が経過したら、同じアラートを閉じます。また、いつでも複数のアラートが存在する可能性があり、ユーザーは、自動的に閉じる前に1つのアラートを手動で閉じることができます。ここでidに追加したので、正しいアラートを閉じることができます。これを達成するために、最初のマップの後の遅延を別のマップよりも使用しようとしました。ただし、これは最初のマップをスキップします。

export const addAlertEpic: Epic<Action, Action, RootState> = (
  action$,
  state$
) =>
  action$.pipe(
    ofType(slice.actions.addAlert),
    map((values: any) =>
      slice.actions.addAlertSuccess({ id: uuid(), ...values.payload })
    )
  );

助けてくれてありがとう!

AndreiGătej

アラートを設定し、設定した期間の後、同じアラートを閉じます[...]ユーザーは、自動的に閉じる前に1つのアラートを手動で閉じることができます

それを念頭に置いて、ここに私のアプローチがあります:

actions$.pipe(
  ofType(slice.actions.addAlert),

  // `There can also be multiple alerts at any time`
  mergeMap(action => {
    const id = uuid();

    // using `NEVER` is important, it's essentially the same as new Observable(() => {})
    // it is needed because we don't want the inner observable to complete unless `takeUntil` decides to
    return NEVER
      .pipe(

        // start with opening the alert
        startWith(slice.actions.addAlertSuccess({ id, ...action.payload }))
        
        // close the alert either
        takeUntil(merge(
          
          // when `TIME` expires
          timer(TIME),
          
          // or when the user decides to
          userClosedActions.pipe(
            filter(action => action.id === id)
          )
        )),

        // at the end(when the stream completed due to `takeUntil`), close the alert
        endWith(slice.actions.closeAlertSuccess(...))
      )
  })
)

userClosedActionsことができますSubject送信するnextユーザーアクションの結果として通知を。例えば:

onClick (closedId) {
 userClosedActions.next({ id: closedId })
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

redux-observableで「of」を使用するにはどうすればよいですか

分類Dev

reduxを使用したreact-apolloSSRでのクライアントの再フェッチを回避するにはどうすればよいですか?

分類Dev

React-Redux-子コンポーネントからアクションをディスパッチするにはどうすればよいですか?

分類Dev

Reduxでデータをフェッチするときに競合状態を回避するにはどうすればよいですか?

分類Dev

redux-observableの場合-アクションの値を返さずにアクションを「ミッドストリーム」でディスパッチするにはどうすればよいですか?

分類Dev

redux-thunkのフェッチアクションから状態にアクセスするにはどうすればよいですか?

分類Dev

Redux Observableで1つのアクションをディスパッチし、1秒待ってから、さらに2つのアクションをディスパッチするにはどうすればよいですか?

分類Dev

React / Reduxで何かをディスパッチするにはどうすればよいですか?

分類Dev

すべてのreduxで観察可能なエピックにグローバルエラーハンドラーを追加するにはどうすればよいですか?

分類Dev

Observable.ajax(redux-observable)をテストするにはどうすればよいですか?

分類Dev

redux sagaでIDをディスパッチするにはどうすればよいですか?

分類Dev

reduxで関数をディスパッチするにはどうすればよいですか?

分類Dev

リダイレクトが行われた後にアクション(Redux)をディスパッチするにはどうすればよいですか?

分類Dev

反応プロジェクトでredux状態をマルチフィルターするにはどうすればよいですか?

分類Dev

redux observableで、他のアクションの前にアクションを実行するにはどうすればよいですか?

分類Dev

新しいreduxアクションをディスパッチするときにオブジェクトサブフィールドを適切に削除するにはどうすればよいですか?

分類Dev

React-ReduxプロジェクトでEsriArcgis Mapsを使用するにはどうすればよいですか?

分類Dev

reduxツールキットで複数のディスパッチを使用してアクションクリエーターを変換するにはどうすればよいですか?

分類Dev

Reduxフォームで、チェックボックスのチェックされたプロパティの初期値を設定するにはどうすればよいですか?

分類Dev

reduxミドルウェアでディスパッチにアクセスするにはどうすればよいですか?

分類Dev

React&Redux、ExpressバックエンドアプリでJWTを使用し、redux-persistなどのパッケージを使用せずにユーザーログインを永続化するにはどうすればよいですか?

分類Dev

react reduxプロジェクトのエラーを解決するにはどうすればよいですか?

分類Dev

ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

分類Dev

ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

分類Dev

redux接続コンポーネントでtypescriptを使用するにはどうすればよいですか?

分類Dev

redux observableの内部observableから退会するにはどうすればよいですか?

分類Dev

アプリの起動時にreduxでフェッチを開始するにはどうすればよいですか?

分類Dev

redux-observable epicを使用して2つのアクション間の期間を測定するにはどうすればよいですか?

分類Dev

Jest:子コンポーネントのみにReduxモックストアを提供するにはどうすればよいですか?

Related 関連記事

  1. 1

    redux-observableで「of」を使用するにはどうすればよいですか

  2. 2

    reduxを使用したreact-apolloSSRでのクライアントの再フェッチを回避するにはどうすればよいですか?

  3. 3

    React-Redux-子コンポーネントからアクションをディスパッチするにはどうすればよいですか?

  4. 4

    Reduxでデータをフェッチするときに競合状態を回避するにはどうすればよいですか?

  5. 5

    redux-observableの場合-アクションの値を返さずにアクションを「ミッドストリーム」でディスパッチするにはどうすればよいですか?

  6. 6

    redux-thunkのフェッチアクションから状態にアクセスするにはどうすればよいですか?

  7. 7

    Redux Observableで1つのアクションをディスパッチし、1秒待ってから、さらに2つのアクションをディスパッチするにはどうすればよいですか?

  8. 8

    React / Reduxで何かをディスパッチするにはどうすればよいですか?

  9. 9

    すべてのreduxで観察可能なエピックにグローバルエラーハンドラーを追加するにはどうすればよいですか?

  10. 10

    Observable.ajax(redux-observable)をテストするにはどうすればよいですか?

  11. 11

    redux sagaでIDをディスパッチするにはどうすればよいですか?

  12. 12

    reduxで関数をディスパッチするにはどうすればよいですか?

  13. 13

    リダイレクトが行われた後にアクション(Redux)をディスパッチするにはどうすればよいですか?

  14. 14

    反応プロジェクトでredux状態をマルチフィルターするにはどうすればよいですか?

  15. 15

    redux observableで、他のアクションの前にアクションを実行するにはどうすればよいですか?

  16. 16

    新しいreduxアクションをディスパッチするときにオブジェクトサブフィールドを適切に削除するにはどうすればよいですか?

  17. 17

    React-ReduxプロジェクトでEsriArcgis Mapsを使用するにはどうすればよいですか?

  18. 18

    reduxツールキットで複数のディスパッチを使用してアクションクリエーターを変換するにはどうすればよいですか?

  19. 19

    Reduxフォームで、チェックボックスのチェックされたプロパティの初期値を設定するにはどうすればよいですか?

  20. 20

    reduxミドルウェアでディスパッチにアクセスするにはどうすればよいですか?

  21. 21

    React&Redux、ExpressバックエンドアプリでJWTを使用し、redux-persistなどのパッケージを使用せずにユーザーログインを永続化するにはどうすればよいですか?

  22. 22

    react reduxプロジェクトのエラーを解決するにはどうすればよいですか?

  23. 23

    ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

  24. 24

    ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

  25. 25

    redux接続コンポーネントでtypescriptを使用するにはどうすればよいですか?

  26. 26

    redux observableの内部observableから退会するにはどうすればよいですか?

  27. 27

    アプリの起動時にreduxでフェッチを開始するにはどうすればよいですか?

  28. 28

    redux-observable epicを使用して2つのアクション間の期間を測定するにはどうすればよいですか?

  29. 29

    Jest:子コンポーネントのみにReduxモックストアを提供するにはどうすればよいですか?

ホットタグ

アーカイブ