我的传奇函数在调用我的动作时根本没有被调用?

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

我加入了一个bigmedium项目,我很难创建我的第一个redux-saga-action东西,这将是一个很大的代码,因为他们正在创建很多文件,使事情可读。

所以我在我的组件DidMount中调用我的动作,动作被调用是因为我有警报。

export const fetchDataRequest = () => {
  alert("actions data");
  return ({
    type: FETCH_DATA_REQUEST
  })
};

export const fetchDataSuccess = data => ({
  type: FETCH_DATA_SUCCESS,
  payload: {
    data,
  },
});

这是我的历史传奇:(当我调用这个类型的action时,函数得到执行)。

export default function* dataSaga() {
    // their takeEverymethods  
    yield takeEvery(FETCH_DATA_REQUEST, fetchData);
}

这就是必须调用的内容:(我正试图用json文件中的数据填充我的状态:mock)。

export default function* fetchTronconsOfCircuit() {

    try {

        // Cal to api
        const client = yield call(RedClient);
        const data = yield call(client.fetchSomething);

        // mock 
        const history = data === "" ? "" : fakeDataFromMock;
        console.log("history : ");
        console.log(history);

        if (isNilOrEmpty(history)) return null;

        yield put(fetchDataSuccess({ data: history }));
    } catch (e) {
        yield put(addErr(e));
    }
}

这就是我的根根传奇 。

export default function* sagas() {

  // many other spawn(somethingSaga);
  yield spawn(historySaga);

}

这里是减速器。

const fetchDataSuccess = curry(({ data }, state) => ({
  ...state,
  myData: data,
}));

const HistoryReducer = createSwitchReducer(initialState, [
  [FETCH_DATA_SUCCESS, fetchDataSuccess],
]);

createSwitchReducer这个方法是由团队创建的,目的是为了轻松地创建一个reducer,而不是创建一个switch,然后在params中传递action.type等等,他们的方法工作得很好,我也做了他们为别人做的事情。

我是不是错过了什么?

我觉得我做的一切都对,但是saga没有被调用,这意味着这是一个小问题,动作和saga之间的连接是一个常见的问题,我只是不知道我的问题在哪里。

我没有在控制台中看到 console.log 消息,我在 try-catch 之前加了一个 alert,但也没有得到什么,但 action 里面的 alert 被调用了。

任何帮助都会非常非常感激。

react-native redux redux-saga dispatch
1个回答
0
投票
yield takeEvery(FETCH_DATA_REQUEST, fetchData); 

应该是

yield takeEvery(FETCH_DATA_REQUEST, fetchTronconsOfCircuit);
© www.soinside.com 2019 - 2024. All rights reserved.