关于 redux-toolkit redux-saga 的一些问题

Posted

技术标签:

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

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

    我使用 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),
  ])

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

import  createAsyncThunk  from '@reduxjs/toolkit'

const fetchUserById = createAsyncThunk(
  'users/fetchByIdStatus',
  async (userId,  dispatch ) => 

    dispatch(someOtherAction())

  
)

【讨论】:

谢谢,我会试试你知道如何在减速器完成第一个动作后监听一个动作并调度另一个异步动作 thunk 无法做到这一点。您可以只使用一个普通的 thunk 来调度其他两个 thunk,但中间有一个 await

以上是关于关于 redux-toolkit redux-saga 的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

“AsyncThunkAction”Redux-toolkit 类型上不存在属性“then”

从 Redux-Toolkit 存储中获取返回 undefined

在 Redux-Toolkit 中使用 for 循环的问题

如何在 Storybook 中使用 redux-toolkit?

Redux-Toolkit = 无法使用 useSelector 显示 API 响应数据

为一个大项目迁移到 redux-toolkit