【问题标题】:some question about redux-toolkit redux-saga关于 redux-toolkit redux-saga 的一些问题
【发布时间】:2021-11-26 16:09:16
【问题描述】:

我有一个使用 redux-toolkit 和 redux-saga 的项目,它现在运行良好。 但现在我有一些问题需要使用 redux-saga。

  1. 我使用 redux-saga 的大多数功能之一,因为它有副作用。 如果我在 reducer 执行后在 redux 上调度一个动作 它可以执行另一个 saga 函数。
  yield all([
    takeEvery<any>(boardAcctions.addWidget.type, updateWidgetUI),
    takeEvery<any>(boardAcctions.moveWidget.type, updateWidgetUI),
    takeEvery<any>(boardAcctions.updateWidgetConfig.type, updateWidgetUI),
    takeEvery<any>(boardAcctions.removeWidget.type, updateWidgetUI),
  ])

  1. 在 saga 函数上,您可以调度另一个动作,因此如果您有多个动作需要更新,使用 saga 将非常容易。
    yield put(loginActions.updateUser(userdata))
    yield put(dashboardAction.updateBoard(dashboarData))

但是在带有函数 createAsyncThunk() 的 redux-toolkit 上。 我无法发送其他操作。即使在额外的情况下,它也只是一个减速器,我认为在里面调度另一个不是非法的动作

如果没有 redux-saga,我该怎么做?

谢谢

【问题讨论】:

    标签: reactjs redux redux-saga redux-toolkit


    【解决方案1】:

    当然,您可以从createAsyncThunk 中调度其他操作。

    import { createAsyncThunk } from '@reduxjs/toolkit'
    
    const fetchUserById = createAsyncThunk(
      'users/fetchByIdStatus',
      async (userId, { dispatch }) => {
    
        dispatch(someOtherAction())
    
      }
    )
    

    【讨论】:

    • 谢谢,我会试试你知道如何在减速器完成第一个动作后监听一个动作并调度另一个异步动作
    • thunk 无法做到这一点。您可以只使用一个普通的 thunk 来调度其他两个 thunk,但中间有一个 await
    猜你喜欢
    • 2021-12-22
    • 2022-01-26
    • 2022-09-26
    • 2019-04-20
    • 2020-03-23
    • 2021-06-08
    • 2022-11-28
    • 2023-01-15
    • 2021-09-30
    相关资源
    最近更新 更多