1. إذا كنت أرغب في دمج الإغلاق غير المتزامن ، https://ant.design/components/modal-cn/#components -modal-demo-async ، يجب أن يقبل onOk وعدًا في this.setState ({
مرئي: خطأ ،
ConfirmLoading: خطأ ،
}) ؛
بعد إرسال إجراء في dva ،
إرسال({
اكتب: "المستخدمين / إنشاء" ،
الحمولة: القيم ،
}) ؛ القيمة ليست وعدًا ، ولكنها فعل.
يمكن أن يكون الحل هو وضع حالات التحميل المرئية وتأكيد التحميل في المتجر.
nickzheng جرب هذه الطريقة:
استخدم الوعد لتغليف الإرسال في المكون ، على سبيل المثال:
new Promise((resolve, reject) => {
dispatch({
type: 'users/create',
payload: {
values,
resolve,
reject,
},
});
})
.then( res => {
console.log(res);
})
.catch( err => {
console.log(err);
})
وبتأثير dva ، يمكنك كتابته على النحو التالي:
* create({ payload }, { put, call }) {
const { value, resolve, reject } = payload;
// 一些操作之后
if (success) {
resolve('done');
} else {
reject('error');
}
}
كانت الفكرة السابقة لـ sorrycc هي أنه لا توجد حاجة
https://github.com/dvajs/dva-core/blob/0fa6888/test/effects-test.js#L332 -L365 ، وعد بإرجاع الدعم المدمج (EffectAction).
sorrycc يحب واحدًا ، اسأل عن إصدار هذه الميزة الذي تمت إضافته؟ لا يبدو أن ترى التغيير؟
daskyrk الخ # 772
إنه مدعوم في dva @ 2 .
بعد الدعم الداخلي للوعود ، كيف نحدد الحل والرفض في الواقع؟
كيف تحسب على أنها نجاح ، وكيف تحسب على أنها فشل؟
في الحل المقدم من الحل والرفض إلى تأثير من خلال الحمولة ، ثم يتم استدعاء action.payload ، يتم استدعاء الحل ساري المفعول
new Promise((resolve, reject) => {
dispatch({
type: 'users/create',
payload: {
values,
resolve,
reject,
},
});
})
.then( res => {
console.log(res);
})
.catch( err => {
console.log(err);
})
هل الوعد الداخلي يعني تحويل القمة إلى القاع؟
dispatch({
type: 'users/create',
payload: {
values,
resolve,
reject,
},
})
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
})
مشروع
const { dispatch } = this.props;
dispatch({
type: 'specification/fetch',
payload: applicationId,
}).then((data) => {
console.log(data)
});
نموذج
effects: {
* fetch({ payload }, { call, put, select}) {
const response = yield call(querySpecification, payload);
yield put({
type: 'list',
payload: response
});
return yield select(state => state.specification.list); //important
}
},
reducers: {
list(state, action) {
return {
...state,
list: action.payload
};
}
}
Youthink ماذا أفعل في وضعي مثل أدناه
مشروع
this.props.dispatch({
type: 'app/login',
payload: {
phone: '13312332131',
smscode: '6666',
}
}).then(data => {
console.log('success result', data)
}).catch(err => {
console.warn('error result', err)
})
نموذج
*login({ payload }, { call, put }) {
// 请求状态 fetching 为 true,方便页面显示loading状态
yield put({ type: 'updateState', fetching: true })
// 这里进行登录 service
const login = yield call(authService.login, payload)
// 如果上面的 authService.login 异常了,下面的逻辑就不会进行了,下面的 fetching 设置为 false 也不会执行到
if (login) {
yield put(NavigationActions.back())
Storage.set('login', login)
}
// 这里重置下 状态 fetching 为 false
yield put({type:'updateState', fetching: false })
},
أعتقد أنه بغض النظر عما إذا كانت الواجهة الخلفية ترجع النجاح أم أن هناك استثناء ، يمكن تنفيذه على yield put({type:'updateState', fetching: false })
. أعلم أنه من الممكن إرسال رسالة إلى النموذج لتعيين الجلب في المشروع ، بغض النظر عن النجاح أو الفشل ، ولكن لا يبدو من المناسب جدًا القيام بذلك.
التعليق الأكثر فائدة
nickzheng جرب هذه الطريقة:
استخدم الوعد لتغليف الإرسال في المكون ، على سبيل المثال:
وبتأثير dva ، يمكنك كتابته على النحو التالي:
كانت الفكرة السابقة لـ sorrycc هي أنه لا توجد حاجة