efectos: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: async function ({ payload }, { select, call, put }) {
await put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = await call(query, '/home/course', payload);
if (data) {
await put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
},
efectos: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: function* ({ payload }, { select, call, put }) {
yield put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = yield call(query, '/home/course', payload);
if (data) {
yield put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
},
Sí, el efecto solo admite la redacción del generador. async
y await
se pueden usar fuera del efecto, y luego usar la llamada de rendimiento para ajustar el efecto.
Lo entiendo gracias dios
Disculpe, ¿el efecto tendrá la posibilidad de admitir async en el futuro? @ lo siento
Async no tiene un generador controlable, como cancel
, por lo que redux-saga elige usar el generador.
Oh
@sorrycc ¿Cómo puedo cancelar un efecto?
@miaojiuchen ¿Cuál es la escena? ¿Por qué cancelar efecto?
@sorrycc Me
Esto está bien en una página, pero si visita otras páginas y luego regresa a la página anterior, el efecto 2 se repetirá.
¿Cómo puedo cancelar el efecto en el efecto 1 y luego activar el efecto 2?
¿Tengo que usar suscripciones de ruta para llamar a @@ CANCEL_EFFECTS?
Gracias.
@sorrycc Ya que también mencionaste qué escenarios deben usar cancelar aquí, de hecho, async / await es suficiente en la mayoría de los casos. En el uso actual, use generator / yield para llamar a async / await. Esto es demasiado doloroso. El autor puede considerar admitir ambos modos al mismo tiempo y permitir que los usuarios elijan por sí mismos, como agregar un elemento de configuración y llamar al modo async / await después de la apertura, o juicio adaptativo.
Puede probar redva , el mismo marco
Comentario más útil
@sorrycc Ya que también mencionaste qué escenarios deben usar cancelar aquí, de hecho, async / await es suficiente en la mayoría de los casos. En el uso actual, use generator / yield para llamar a async / await. Esto es demasiado doloroso. El autor puede considerar admitir ambos modos al mismo tiempo y permitir que los usuarios elijan por sí mismos, como agregar un elemento de configuración y llamar al modo async / await después de la apertura, o juicio adaptativo.