Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Новый стейт менеджер для react, preact (https://javascript.ru/forum/library-toolkit-framework/82253-novyjj-stejjt-menedzher-dlya-react-preact.html)

rubender 08.04.2021 20:12

Новый стейт менеджер для react, preact
 
Предлагаю вашему вниманию мой велосипед :)

https://github.com/rubender/redoor

Когда я делал библиотеку хотел сделать как можно проще библиотеку управления стейтом для реакта, так и родилась эта библиотека.
Я ее обкатываю уже где то год.

пример использования:
import { h, Component, createContext, render } from 'preact';
import createStoreFactory from 'redoor';

const createStore = createStoreFactory({
    Component:Component,
    createContext:createContext,
    createElement:h
});

const actions_module = {
  initState:{
    cnt:0,
    direction:''
  },
  a_click:({state,args})=>({
    cnt:(state.cnt + args),
    direction:(args > 0 ? 'plus' : 'minus')
  })
}

const { Provider, Connect } = createStore([actions_module]);

const ButtonPlus = Connect(
  ({cxRun})=><button onClick={e=>cxRun('a_click',1)}>plus</button>
)

const ButtonMinus = Connect(
  ({cxRun})=><button onClick={e=>cxRun('a_click',-1)}>minus</button>
)

const Display = Connect(({direction,cnt})=><div>
      count: {cnt} <br/>
      direction: {direction}
</div>)

const Main = () => (
  <Provider>
    <Display/>
    <hr/>
    <ButtonPlus/> - <ButtonMinus/>
  </Provider>
)

render(<Main />, document.getElementById("app"));

Aetae 08.04.2021 20:49

Выглядит некрасиво, уже минус. Чем лучше обычного стейта - непонятно. О mobx и прочем можно даже не говорить.


Часовой пояс GMT +3, время: 21:09.