gpt4 book ai didi

reactjs - 我应该在启动应用程序时运行所有传奇吗?

转载 作者:行者123 更新时间:2023-12-03 14:26:33 26 4
gpt4 key购买 nike

我刚刚开始学习和使用redux-saga,一开始我以为它是这样工作的:首先你做出连接到saga的action,然后saga检测到action,调用返回数据的api,saga返回这个数据到 reducer 。我构建了 2 个测试 saga 文件和 1 个 root saga(我想制作 rootSaga,如combineReducer),所以这是我的 rootSaga :

import * as SpreadsheetSagas         from "../pages/spreadsheet/containers/spreadsheet/spreadsheet.saga";
import * as SpreadsheetFilterSagas from "../pages/spreadsheet/containers/spreadsheet_filter/spreadsheet_filter.saga";

export default function* rootSaga() {
yield all([
...Object.values(SpreadsheetSagas),
...Object.values(SpreadsheetFilterSagas)
].map(fork))
}

这是我的传奇功能之一:

export function* getData() {
const response = yield call(ApiService.get);
const payload = response ? response.data : {};
//send returned object back to reducer as payload:
yield put({ type: 'GET_MOCK_DATA', payload});
}

我的商店文件夹如下所示:

const middleWare = [];

// Setup Redux-Saga.
const sagaMiddleware = createSagaMiddleware();
middleWare.push(sagaMiddleware);

const store = createStore(rootReducer, {},
compose(applyMiddleware(...middleWare)));

// Initiate the root saga.
sagaMiddleware.run(rootSaga);

所以,当我运行我的应用程序时,它会调用每个 saga 函数 - 这是实现 sagas 的正确方法:?或者我应该有几个取决于当前页面的 rootSaga 文件,然后当我打开页面时,运行适当的 rootSaga?我希望我正确地解释了一切:/请给我任何建议。谢谢。

最佳答案

我认为通常您只有一棵与整个应用程序相关的传奇树,而不是不同页面/路线的多个根传奇。您只需将 rootSaga 作为中间件附加一次。

所以,是的,当您的应用程序启动时,整个传奇树就会启动并观察操作。 Sagas 与您的商店在全局范围内进行交互,因此他们从您的应用程序开始在全局范围内是有意义的。

仅启动监视操作的传奇(使用taketakeEvery等)。当您的应用启动时,不应调用其他产生副作用或调用 api 的传奇。

创建类似于reducer 和combineReducer 的saga 树也是正确的方法。

关于reactjs - 我应该在启动应用程序时运行所有传奇吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com