Skip to content

VirentiaСтейт-менеджер для сложной бизнес-логики

Описывайте бизнес-правила как модель: состояние в сторах, события для фактов, эффекты для внешней работы, реакции для правил.

Логотип Virentia
ts
import { event, reaction, store } from "@virentia/core";

export function createCounterModel() {
  const incremented = event<void>();
  const count = store(0);

  reaction({
    on: incremented,
    run() {
      count.value += 1;
    },
  });

  return { count, incremented };
}
tsx
import { component } from "@virentia/react";
import { createCounterModel } from "./model";

export const Counter = component({
  model: createCounterModel,
  view({ model }) {
    const increment = () => model.incremented();

    return <button onClick={increment}>{model.count}</button>;
  },
});