еффектора. Вообщем суть в том что мы описываем наш стейт вот в таком виде 
                  
                  
                  export const entities = createState({})
                  
                  
                    .on(events.replace, (_, payload) => payload)
                  
                  
                    .on(events.create, reducer.set)
                  
                  
                    .on(effectsEvents.getOne.success, reducer.set)
                  
                  
                    .on(events.update, reducer.update);
                  
                  
                  
                  
                  
                  export const ui = createState({}).on(
                  
                  
                    events.setSelectedMachines,
                  
                  
                    (state, payload) => {
                  
                  
                      return { ...state, selectedMachines: payload };
                  
                  
                    }
                  
                  
                  );
                  
                  
                  
                  
                  
                  export const actionsState = handleActionsState(createState({}), effectsEvents);
                  
                  
                  
                  
                  
                  export const machinesRootState = createState({
                  
                  
                    entities,
                  
                  
                    ui,
                  
                  
                    actions: actionsState
                  
                  
                  });
                  
                  
                  т.е ничего не обычного, просто собираем весь стейт до самого верхнего уровня, а потом на самом верху делаем buildReducer на рутовом стейте
                  
                  
                  const reducer = combineReducers({
                  
                  
                    ...reducerMapObj,
                  
                  
                    machines: machinesRootState.buildReducer("machines"),
                  
                  
                    actions: actionStateReducer
                  
                  
                  });
                  
                  
                  и после этого мы импортим напрямую наш редюсер со стейта
                  
                  
                  import {  machines, ui  } from ‘./state’
                  
                  
                  
                  
                  
                  const mapStateToProps = (state) => {
                  
                  
                  const machinesState = machines.select(state);
                  
                  
                  const machinesUiState = ui.select(state);
                  
                  
                  return {  first: machinesState[0], activeMachine: machineUiState.activeMachine  }  
                  
                  
                  }
                  
                  
                  суть либки в том что бы абстрагироваться от формы стейта и привязаться к сущностям, которые у нас в коде. Т.е при рефакторе и изменении структуры стора нам не надо будет переписывать мап стейт ту пропс и другую хрень. Это все можно было бы решить через селекторы, но там сложнее вывести правильный тип стейта, а тут он будет сам выводиться. Что думаете вообщем ? https://github.com/zhDmitry/restate
                  
                  
                
Норм
Это coredux
Обсуждают сегодня