modelon

0.1.1 • Public • Published

modelon

// src/models/counter.js
import createModel from 'modelon/react';

const [modelCounter, useModelCounter] = createModel(
  'counter',
  { count: 0 },
  {
    decrease({ count }) {
      return { count: count - 1 };
    },
    increase({ count }) {
      return { count: count + 1 };
    },
    reset(_store, { set }) {
      set(0);
    },
    set(_state, _actions, value) {
      return { count: value };
    },
  },
);

export {
  modelCounter,
  useModelCounter,
};
// src/index.js
import createStore from 'storeon';
import StoreContext from 'storeon/react/context';
import { modelCounter } from 'models/counter';

const store = createStore([modelCounter]);

render(
  <StoreContext.Provider value={store}>
    <Counter />
  </StoreContext.Provider>,
  document.body
)
// src/containers/Counter.js
import { useModelCounter } from 'models/counter';

const Counter = () => {
  const [counter, { decrease, increase }] = useModelCounter();

  return (
    <div>
      {counter.count}

      <button onClick={() => decrease()}>-</button>
      <button onClick={() => increase()}>+</button>
    </div>
  );
};

/modelon/

    Package Sidebar

    Install

    npm i modelon

    Weekly Downloads

    0

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    4.4 kB

    Total Files

    7

    Last publish

    Collaborators

    • ahtohbi4