Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 2.31 KB

File metadata and controls

72 lines (53 loc) · 2.31 KB
title Inicio rápido
description Crea un slice de contador, despacha acciones y reacciona al estado seleccionado.
icon circle-play

Inicio rápido

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.

1. Define un slice

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.

2. Configura el store

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.

3. Selecciona un valor y despacha acciones

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.

¿Qué ocurre después de un clic?

  1. Un evento de UI despacha counter_slice.actions.increment().
  2. El reducer counter recibe un draft aislado del estado de su slice.
  3. El store guarda el resultado del reducer.
  4. PyDux vuelve a ejecutar las suscripciones.
  5. Ú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.