redux saga 异步请求死循环,求帮忙看看
刚入坑,点击按钮抓取数据,陷入无限发请求,帮忙看看
想要的效果是 打开请求之前打开loading,完成后关闭loading
const TABLE_GET = "table_get";
const getAction = () => ({
type: TABLE_GET,
rows,
loading,
});
const defaultState = {
rows: [],
loading: false,
}
const moduleC = (state = defaultState, action) => {
const { type, rows, loading } = action;
switch (type) {
case TABLE_GET:
return { ...state, rows, loading };
default:
return state;
}
}
export default moduleC;
import { takeEvery, put } from 'redux-saga/effects';
import axios from 'axios';
function* tableGet(action) {
try {
yield put({
...action,
loading: true,
});
const result = yield axios.get("http://jsonplaceholder.typicode.com/posts");
yield put({
...action,
loading: false,
rows: result.data
});
} catch (error) {
console.log("获取失败!");
yield put({
...action,
loading: false,
});
}
}
function* mySaga() {
yield takeEvery(TABLE_GET, tableGet);
}
export default mySaga;
ui组件:
const module = props => {
const { getAction } = props;
return (
<Fragment>
<button onClick={getAction}>获取</button>
</Fragment>
);
}
const dispatchToProps = {
getAction,
}
export default connect(null, dispatchToProps)(module);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
刚刚发现,put了好几个同样的TABLE_GET,导致死循环。。。。