不确定我在这里做错了什么,我只是想从所有sagas中访问上下文。
// Saga.js
function* test1() {
const foo = yield getContext('foo');
if (!foo) yield setContext({ foo: 'bar' });
const test = yield getContext('foo');
console.log(test); // Correct 'bar'.
}
function* test2() {
const getFooValue = yield fork(test1); // This doesnt return getContext or the context value of foo
// Do stuff here.
}
和中间件
// TheStore.js
const sagaMiddleware = createSagaMiddleware({
context: {
foo: '',
},
});
const TheStore: Store<ReduxState, *> = createStore(
reducers,
applyMiddleware(sagaMiddleware)
);
答案 0 :(得分:0)
如果要返回foo的值,可以执行以下操作:
// Saga.js
function* test1() {
const foo = yield getContext('foo');
if (!foo) yield setContext({ foo: 'bar' });
const test = yield getContext('foo');
console.log(test); // Correct 'bar'.
return test;
}
function* test2() {
const getFooValue = yield call(test1); // This will now return the value of foo
// Do stuff here.
}
fork
在执行下一行代码之前不会等待test1完成。 call
将等待test1完成并获取返回值。