下午好!我在使用redux-saga的简单请求时遇到问题。
我有3个动作:请求-> onSuccess / onFail。 request操作将重置任何错误并将加载标志设置为true。 onSuccess / onFail将此加载标志设置为false,并进行其他任何必要的更改。我在componentDidUpdate内部使用这些标志来控制流程。我在所有应用程序中都使用了这种模式,到目前为止,我从未遇到过任何问题。
在redux-logger和reducer内的console.logs上,一切正常。但是这些更改并未反映在我的组件上。
我怀疑随着时间的推移会出现一些奇怪的问题,因为传奇事件解决的速度太快,无法使connect组件正常工作,所以我增加了100ms的延迟,突然一切正常。
reducer.js
case c.SEND_COMMAND_REQUEST: {
// console.log('STATE1', state);
return {
...state,
loading: true,
error: null,
};
}
case c.ON_COMMAND_SUCCESS: {
// console.log('STATE2', state);
return {
...state,
loading: false,
};
}
saga.js
function* sendCommandRequest({ payload }) {
try {
// yield sendCommand(payload);
yield delay(100) // this works
yield put(actions.onCommandSuccess({ id: payload.id }));
}
catch (err) {
yield handleError(err, actions.onCommandFail, { id: payload.id });
}
export default function* commandsSaga() {
yield takeLatest(c.SEND_COMMAND_REQUEST, sendCommandRequest);
}
}
通过点击我应用上的“发送”按钮,我希望加载的值是:
SEND_COMMAND_REQUEST(prevProps.loading):true ON_COMMAND_SUCCESS(道具加载):false
但没有增加延迟,我就得到了
SEND_COMMAND_REQUEST:此减速器完全没有返回任何内容 ON_COMMAND_SUCCESS(道具加载):false
我什至都不知道怎么用谷歌搜索。预先感谢!