我在userActions.js
中有此操作:
const receiveFilialData = (data) => {
return {
type: "RECEIVE_FILIAL_DATA",
payload: data
}
}
export default {
receiveFilialData
}
在我的登录组件中,我正在调度以从传奇中获取一些数据:
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
调度时,我创建了一个传奇来发出此请求:
// 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);
}
如果在console.log(response.json)
文件中放入LoginService
,则fetchFiliais
正在打印我的响应,但是console.log(data)
之后的yield call()
没有运行;控制流将转到catch(e)
并抛出:
type:“ FETCH_FILIAIS_FAILED”消息:“ call:类型的参数{context,fn}具有未定义或为空的
fn
“
为什么?
LoginService.fetchFiliais
改为LoginService.fetchFiliais())
这不是函数,而是const