- 在dva的models中使用setTimeout:
在models的effects中直接用setTimeout函数会报错,例如以下错误写法:
effects: {
*update({ payload }, { call, put }) {
const response = yield call(update, payload);
if (response.status == "success") {
message.success('成功!');
setTimeout(()=>{
yield put(routerRedux.push(`/xxx/xxx`));
},2000)
}
}
}
解决方案:就是在这个model自定义一个方法,并在effects里调用settimeout方法
const delay = (ms) => new Promise((resolve) => {
setTimeout(resolve, ms);
});
export default {
namespace: 'aa',
state: {},
effects: {
*update({ payload }, { call, put }) {
const response = yield call(update, payload);
if (response.status == "success") {
message.success('成功!');
setTimeout(()=>{
yield put(routerRedux.push(`/xxx/xxx`));
},2000)
}
}
},
reducers: {},
};
本文介绍了在DVA框架的models部分如何正确使用setTimeout实现页面延迟跳转的方法,避免直接在effects中使用带来的错误,并提供了一种通过自定义方法结合Promise来解决这一问题的有效方案。
1191

被折叠的 条评论
为什么被折叠?



