| title | Inicio rápido |
|---|---|
| description | Crea un slice de contador, despacha acciones y reacciona al estado seleccionado. |
| icon | circle-play |
Esta página crea un contador sin una GUI. Presenta las cinco ideas que necesitas para comenzar a usar PyDux: un store, slice, action, reducer y selector.
Un slice posee un estado inicial y los reducers que pueden modificarlo. PyDux crea creadores de acciones con namespace a partir de los nombres de los reducers.
from pydux import create_slice
counter_slice = create_slice(
name="counter",
initial_state={"value": 0},
reducers={
"increment": lambda state, action: state.update(value=state["value"] + 1),
"decrement": lambda state, action: state.update(value=state["value"] - 1),
},
)counter_slice.actions.increment() ahora devuelve una acción cuyo tipo es
counter/increment.
from pydux import configure_store
store = configure_store({"counter": counter_slice}, devtools=False)
print(store.get_state()) # {"counter": {"value": 0}}Pasa devtools=True cuando quieras un historial de dispatch y el inspector local.
from pydux import create_selector
select_value = lambda state: state["counter"]["value"]
select_label = create_selector(select_value, lambda value: f"Count = {value}")
unsubscribe = store.select(select_label, lambda label: print(label), fire_immediately=True)
store.dispatch(counter_slice.actions.increment())
store.dispatch(counter_slice.actions.increment())
store.dispatch(counter_slice.actions.decrement())
unsubscribe()El listener se llama inmediatamente con Count = 0 y, después, únicamente cuando una acción
cambia el resultado del selector.
- Un evento de UI despacha
counter_slice.actions.increment(). - El reducer
counterrecibe un draft aislado del estado de su slice. - El store guarda el resultado del reducer.
- PyDux vuelve a ejecutar las suscripciones.
- Únicamente una suscripción cuyo valor seleccionado haya cambiado recibe un callback.
Continúa con stores y slices, o conecta este patrón a un componente de Qyro en integración con Qyro.