javascript - react - redux saga tutorial
Cómo obtener action.params de saga (2)
const actionCreator=()=>({
type: ''MY_ACTION'',
status:true
})
function* updatePorts(action) {
console.log(action.status)
}
function* watchUpdatePorts() {
yield* takeEvery(''MY_ACTION'', updatePorts)
}
https://github.com/redux-saga/redux-saga/tree/master/docs/api#takeeverypattern-saga-args
Estoy usando redux-saga
. En el código yield* ReduxSaga.takeEvery(''MY_ACTION'', updatePorts);
¿Cómo puedo acceder a la action
para obtener sus campos?
Por ejemplo, tengo un creador de acciones:
function status(){
type: ''MY_ACTION'',
status: true
}
¿Cómo puedo acceder a action.status
desde mi saga? ¿O debo acceder a los datos solo a través de getState()
y seleccionar ?
const actionCreator = () => ({
type: ''MY_ACTION'',
status: true
})
function* updatePorts() {
while (true) {
const { status } = take(''MY_ACTION'');
// ...
}
}
También podrías hacer algo como esto. Los documentos de redux-saga tienen una buena explicación sobre las ventajas:
Usar take tiene un impacto sutil en la forma en que escribimos nuestro código. En el caso de takeEvery las tareas invocadas no tienen control sobre cuándo serán llamadas. Se invocarán una y otra vez en cada acción coincidente. Tampoco tienen control sobre cuándo detener la observación.
En el caso de tomar, el control se invierte. En lugar de llevar las acciones a las tareas del controlador, la Saga está tirando de la acción por sí misma. Parece que la Saga está ejecutando una llamada a función normal action = getNextAction () que se resolverá cuando se envíe la acción.
lea más aquí: https://redux-saga.js.org/docs/advanced/FutureActions.html