Redux и React. Перенос типов из actions в reducer и логики из reducer в component
Приветствую!
1. В начале изучения Redux показалось жутко неудобно прописывать в отдельном файле action constants, затем подключать их для работы с action creators, reducer, component. Поэтому перенес объявление типов actions в reducer, там же формируются action creators с одноименными названиями, благодаря чему прописывать названия actions приходится ощутимо реже. 2. Чтобы не иметь головной боли с нарушением чистоты reducer, вынес из него логику обновления состояния в компоненты. Пример кода получившегося reducer: import { createStore } from "redux"; const updateState = (action) => (...actionConstants) => { const { type, payload } = action; if (!reducer.actions) { reducer.actions = actionConstants.reduce((acc, cur) => { acc[cur] = (payload) => ({ type: cur, payload }); return acc; }, {}); } return actionConstants.includes(type) ? payload : {}; }; const getStore = () => { reducer(); const { actions } = reducer, store = createStore(reducer); return { actions, store }; }; const initialState = { products: [], isLoading: true, }; function reducer(state = initialState, action = {}) { const newState = updateState(action)( "UPDATE_PRODUCTS", "TOGGLE_SPINNER", "REMOVE_FILE", ); return { ...state, ...newState }; } const { store, actions } = getStore(); export { store, actions as default }; Имеет ли право на существование такой подход или возможны проблемы? |
Часовой пояс GMT +3, время: 07:22. |