Skip to content

useUnit

useUnit читает сторы и привязывает вызываемые юниты к scope из ScopeProvider.

Один стор

tsx
const count = useUnit(counter.count);

Компонент перерендерится, когда этот стор изменится в текущем scope.

Одно событие

tsx
const incremented = useUnit(counter.incremented);

Возвращенная функция уже привязана к текущему scope.

tsx
return <button onClick={() => incremented(1)}>{count}</button>;

Объект

Передайте объект, когда компоненту нужны сразу несколько юнитов.

tsx
const model = useUnit({
  count: counter.count,
  incremented: counter.incremented,
  reset: counter.reset,
});
tsx
return <button onClick={() => model.incremented(1)}>{model.count}</button>;

Эффекты

Эффекты тоже становятся функциями для вызова.

tsx
const form = useUnit({
  save: saveFx,
  pending: saveFx.$pending,
});

return (
  <button disabled={form.pending} onClick={() => form.save(values)}>
    Save
  </button>
);