Redux-Saga setContext在其他Saga中不可用

时间:2018-10-26 18:53:41

标签: redux redux-saga

不确定我在这里做错了什么,我只是想从所有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)
);

1 个答案:

答案 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完成并获取返回值。