直接上代码
orderForm的 models层中
subscriptions: {
setup({ dispatch, history }) {
return history.listen(({ pathname, query }) => {
if (pathname.indexOf('/orderForm') >= 0) {
dispatch({ type: 'getTime', payload: query });
}
});
},
},```
state: {
time: '00:10:58',
},
*getTime({ payload }, { call, put, select }) {
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
while(true) {
let { time } = yield select(_ => _.orderForm);
if (time == '00:00:00') {
return
}
// const data = yield call('getTime');
yield call(delay, 1000); // 延时300ms之后进行下一次的while循环执行
yield put({// put必须放到yielddelay后面
type: 'upDateState',
payload: {
time: moment(time, 'HH:mm:ss').subtract(1, 'seconds').format('HH:mm:ss'),// 倒计时
},
});
}
},
直接渲染HTML
<div>{time}</div>