Redux传奇将要catch()而不是执行操作

问题描述 投票:0回答:1

我在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

为什么?

redux redux-saga
1个回答
0
投票
已修复,将LoginService.fetchFiliais改为LoginService.fetchFiliais())这不是函数,而是const
© www.soinside.com 2019 - 2024. All rights reserved.