рд╕рдВрджрд░реНрдн:
1. рдЕрдЧрд░ рдореИрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ https://ant.design/components/modal-cn/#components -modal-demo-async, onOk рдХреЛ рдЗрд╕ рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рджреГрд╢реНрдпрдорд╛рди: рдЭреВрдард╛,
рдкреБрд╖реНрдЯрд┐ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ: рдЭреВрдард╛,
});
рдбреАрд╡рд╛ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж,
рдкреНрд░реЗрд╖рдг({
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдмрдирд╛рдПрдВ',
рдкреЗрд▓реЛрдб: рдорд╛рди,
}); рдореВрд▓реНрдп рдПрдХ рд╡рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдХреНрд░рд┐рдпрд╛ рд╣реИред
рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдореЗрдВ рджреГрд╢реНрдпрдорд╛рди рдФрд░ рдХрдиреНрдлрд░реНрдо рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдЯреЗрдЯреНрд╕ рдбрд╛рд▓реЗрдВред
@nickzheng рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдШрдЯрдХ рдореЗрдВ рдкреНрд░реЗрд╖рдг рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
new Promise((resolve, reject) => {
dispatch({
type: 'users/create',
payload: {
values,
resolve,
reject,
},
});
})
.then( res => {
console.log(res);
})
.catch( err => {
console.log(err);
})
рдФрд░ рдбреАрд╡рд╛ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
* 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/fects-test.js#L332 -L365, рдмрд┐рд▓реНрдЯ-рдЗрди рд╕рдкреЛрд░реНрдЯ рдбрд┐рд╕реНрдкреИрдЪ (рдЗрдлреЗрдХреНрдЯрдПрдХреНрд╢рди) рд░рд┐рдЯрд░реНрди рдкреНрд░реЙрдорд┐рд╕ред
@sorrycc рдПрдХ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рдкреВрдЫреЗрдВ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛? рдЪреЗрдВрдЬрд▓реЙрдЧ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ?
@daskyrk рдЖрджрд┐ #772
рдпрд╣ dva@2 рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред
рд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рдж, рд╕рдВрдХрд▓реНрдк рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ?
рд╕рдлрд▓рддрд╛ рдХреЛ рдХреИрд╕реЗ рдЧрд┐рдиреЗрдВ, рдЕрд╕рдлрд▓рддрд╛ рдХреЛ рдХреИрд╕реЗ рдЧрд┐рдиреЗрдВ?
@pizn рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП
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 рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдШрдЯрдХ рдореЗрдВ рдкреНрд░реЗрд╖рдг рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдФрд░ рдбреАрд╡рд╛ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
@sorrycc рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд╡рд┐рдЪрд╛рд░