说我有一个“添加”项目的按钮。如果一切顺利,则会发出ajax请求,该项目将被添加到页面并显示成功消息。动作是否应该分开进行多个调度或调用? ReactJs + Redux
会有2个调度事件发生
Create
Notification
但应该是这个事件的fireing什么?
说我在我的组件这种方法得到的onClick执行
validate() {
if (this.state.storageName === "" && this.state.sharingKey == "") {
console.log("validation error");
return false;
}
this.props.createNewStorage(this.state);
this.props.setNotifer(true);
}
眼下CreateNewStorage看起来像这样
export function createNewStorage(storage) {
return function (dispatch) {
dispatch({ type: actions.NEW_STORAGE_CREATED, payload: storage });
};
}
setNotifer
export function setNotifer(success) {
return function (dispatch) {
dispatch({ type: actions.SET_NOTIFIER, payload: success });
setTimeout(() => dispatch({ type: actions.CLOSE_NOTIFIER }), 1000);
};
}
我有什么权利现在(调用CreatenewStorage和setNotifier)会工作,但是当我实际上做了一个Ajax请求呼叫g他们这样做将无法正常工作,因为CreateNewStorage可能需要一段时间才能返回成功,而setNotifier已经启动。
因此,这导致我在哪里做多个派遣?
方式1种
export function createNewStorage(storage) {
return function (dispatch) {
dispatch({ type: actions.NEW_STORAGE_CREATED, payload: storage });
dispatch({ type: actions.SET_NOTIFIER, payload: success });
setTimeout(() => dispatch({ type: actions.CLOSE_NOTIFIER }), 1000);
};
方式2
export function createNewStorage(storage) {
return function (dispatch) {
dispatch({ type: actions.NEW_STORAGE_CREATED, payload: storage });
setNotifer(true);
};
}
当然这些方式都将围绕某种AJAX方法的缠绕并且将被放于成功部分。
我只是不知道如果在方式2中可以调用另一个操作方法。
是的,我使用的thunk中间件,但我在这一切还是新的,不100%知道它是什么。我一直在读它。你能提供一些例子吗?我的两种方式都不会做2次调度吗?他们几乎是一样的东西,但方式2调用另一个action.js文件,它有setNotifer(虽然我现在意识到,现在我必须将它包装在调度程序中,就像我在路2中一样) – chobo2
啊我是对不起,我编辑了这个问题本身(新的在这里)!所以愚蠢:(请看看我编辑的答案 –
那么这是thunk吗?我有点看到你在做什么,但不是100%肯定,我会虽然在创建存储包装在Promise将是ajax请求创建存储然后发送它的存储被创建,然后在组件“然后”将是“SET_Notifer”调用。也似乎compoent“then”总是被调用,即使被拒绝? – chobo2