- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法从文档中弄清楚如何使用 runSaga 启动 redux saga 观察器。假设我在 saga.js
中有以下内容:
export function* fetchJokeSaga(action) {
try {
const response = yield call(axios.get, "...");
yield put({ type: "UPDATE_JOKE", payload: response });
} catch (e) {}
}
export default function* watcherSaga(action) {
yield takeEvery("FETCH_JOKE", fetchJokeSaga);
}
以及 Component.js
中的以下内容:
const Component = () => {
const store = useStore();
const dispatch = useDispatch();
const { joke } = useSelector(state => state);
React.useEffect(() => {
runSaga({ dispatch, getState: store.getState }, watcherSaga);
}, []);
return joke;
};
我无法使用 dispatch({ type: 'FETCH_JOKE' })
触发 api 调用。
但是,当我将 fetchJokeSaga
直接用作 runSaga({ dispatch, getState: store.getState }, fetchJokeSaga);
时,它会立即调用 api。
我如何动态启动 watcherSaga
以便稍后可以发送“FETCH_JOKES”?
最佳答案
azundo 几乎找到了解决方案。您需要在 channel 中“放置”一些操作才能启动生成器。
import {stdChannel, runSaga} from 'redux-saga';
const Component = () => {
const store = useStore();
const dispatch = useDispatch();
const { joke } = useSelector(state => state);
React.useEffect(() => {
const channel = stdChannel();
runSaga({ dispatch, getState: store.getState, channel}, watcherSaga);
channel.put({ type: 'FETCH_JOKE' });
}, []);
return joke;
};
希望这对您有所帮助。
关于reactjs - 如何使用 runSaga 启动 redux saga watcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57858622/
我创建了一个 recordSaga 函数,它的目标是记录在 saga 期间调度了哪些 Action 。 export const recordSaga = async (saga, initialAc
我无法从文档中弄清楚如何使用 runSaga 启动 redux saga 观察器。假设我在 saga.js 中有以下内容: export function* fetchJokeSaga(action)
我正在学习关于 pluralsight 的教程,这是一个全栈 react/redux 教程,我正在使用以下代码创建一个 saga.mock.js 文件。 这是我不熟悉的东西,希望得到理解和解释,这样我
对于使用 React 和 redux 进行编码以及使用 JEST、enzyme 和 sinon 进行测试,我非常陌生,所以请耐心等待。 我正在尝试在我的应用程序中测试传奇。目前,我正在尝试测试我的“s
如果我有一个具有这种形式的传奇: function * sagaWorker() { yield put(START_ACTION) yield take(WAIT_FOR_ACTION)
在我的 redux saga 生成器函数上运行 runSaga,我的窗口变量被抛出为未定义,但我的测试文件正在通过,有什么方法可以模拟窗口变量吗? 下面是我的 redux saga 生成器函数 imp
我是一名优秀的程序员,十分优秀!