Была похожая проблема. Я решил, что самым простым способом будет дёргать store.dispatch напрямую, а не через put.
1. Передаем store.dispatch в корневую сагу:
const sagaMiddleware = createSagaMiddleware();
const store = configureStore({
reducer: {
app: VkAppReducer,
},
middleware: [
sagaMiddleware,
],
});
sagaMiddleware.run(rootSaga, store.dispatch);
2. Из корневой саги, передаем dispatch в дочерние
function* rootSaga(dispatch) {
yield spawn(ChildSaga, dispatch);
}
3. В дочерней саге можем использовать dispatch в коллбеке:
const params: MethodParams = {
group_id: 1,
access_token: access_token,
onProgress: (s: string) => {
dispatch(setProgress(s));
},
};