Introducción a Redux
Mateo Calle
@Mathius17
Un poquito de mi antes de seguir
¿Qué es redux?
"Redux is a predictable state container for JavaScript apps."
- Redux homepage
Los 3 principios de Redux
Single source of truth
"Única fuente de verdad"
// El store es un simple objeto de js
{
visibilityFilter: 'SHOW_ALL',
todos: [
{
text: 'Consider using Redux',
completed: true,
},
{
text: 'Keep all state in a single tree',
completed: false
}
]
}
State is read-only
"El estado (global) sólo se puede leer"
// Cada acción es un simple objeto
{
type: COMPLETE_TODO,
index: 1
}
// "Despachar" una acción
store.dispatch({
type: SET_VISIBILITY_FILTER,
filter: 'SHOW_COMPLETED'
})
Changes are made with pure functions
"Los cambios son hechos con funciones puras"
// Función impura
let myConst = 1;
sumConst(param) {
return param + myConst;
}
sumConst(1); // 2
sumConst(10); // 11
myConst = 5;
sumConst(1); // 6
sumConst(10); // 15
// Función pura
sumConst(param) {
let myConst = 1;
return param + myConst;
}
sumConst(1); // 2
sumConst(10); // 11
myConst = 5;
sumConst(1); // 2
sumConst(10); // 11
// Todos reducer
function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
return [
...state,
{
text: action.text,
completed: false
}
]
case 'COMPLETE_TODO':
return state.map((todo, index) => {
if (index !== action.index) return todo;
return {
...todo,
completed: true,
}
})
default:
return state
}
}
Reducer
Conceptos nuevos
Store: objeto sencillo que contiene el estado de la aplicación
Actions (acciones): objeto que declara qué quiere hacer
Reducer: función que retorna un nuevo estado
Código por favor!
Ejemplos
Todos, ejemplo sencillo (tomado de los ejemplos de redux):
https://github.com/reactjs/redux/tree/master/examples/todos
Ejemplo con código asíncrono:
Consejos
- Usen las devtools!!
- Leer la documentación
- Objetos anidados: Immutable.js
- Valores calculados: reselect
- Código asíncrono:
- redux-thunk (proyectos pequeños)
- redux-saga (flujos complejos)
- redux-observable (streams)
Introducción a redux
By mathius17
Introducción a redux
- 413