【发布时间】:2020-02-29 21:25:08
【问题描述】:
我在userActions.js有这个动作:
const receiveFilialData = (data) => {
return {
type: "RECEIVE_FILIAL_DATA",
payload: data
}
}
export default {
receiveFilialData
}
在我的登录组件中,我正在调度以从 saga 中获取一些数据:
const Login = props => {
const dispatch = useDispatch()
const filiais = useSelector(state => state.filiais)
useEffect(() => {
dispatch({type: 'GET_FILIAIS_REQUEST'})
}, [dispatch, filiais])
}
在 LoginService.js 我正在发出 HTTP 请求:
const fetchFiliais = async () => {
const response = await fetch(`${baseUrlApi.baseUrlApi}/filiais`);
const responseJson = await response.json()
return responseJson
}
export default {
fetchFiliais
}
当有 GET_FILIAIS_REQUEST 调度时,我创建了一个 saga 来发出这个请求:
// worker Saga: will be fired on GET_FILIAIS_REQUEST actions
function* fetchFiliais(action) {
try {
const data = yield call(LoginService.fetchFiliais())
console.log(data)
yield put({type: "RECEIVE_FILIAL_DATA", data});
} catch (e) {
yield put({type: 'FETCH_FILIAIS_FAILED', message: e.message})
}
}
/*
Starts fetchFiliais on each dispatched `GET_FILIAIS_REQUEST` action.
*/
function* mySaga() {
yield takeEvery("GET_FILIAIS_REQUEST", fetchFiliais);
}
如果我在LoginService 文件中添加console.log(response.json),fetchFiliais 正在打印我的回复,但yield call() 之后的console.log(data) 没有运行;控制流将转到catch(e) 并抛出:
类型:“FETCH_FILIAIS_FAILED”消息:“调用:参数类型 {context, fn} 未定义或为空
fn"
为什么?
【问题讨论】:
标签: redux redux-saga