@AlexKindGeek

Вопросы по React'y / Redux'y?

Всем привет. Дабы не создавать по 10 раз вопросы, напишу в одном, все что меня интересует.

1. В реальных проектах используете ли вы CRA или сами настраиваете проект (вместе с webpack и т.д)?

2.
Как вы делаете редюсеры?
Например у нас есть 5-10+ екшенов, которые меняют один и тот же редюсер. Это же получится каша, если использовать switch ....

Используете ли вы функцию по типу
createReducer(initialState, mainAction, {
  actionName:  reducerHelper
})
???

Пример
const createQuestionUpdate = (state, action) => {
  switch (action.type) {
    case `${CREATE_QUESTION}_UPDATE`:
      const {data, path } = action.payload;
      const res =  set(state, path, data);
      return Object.assign({}, res);
    default:
      return state;
  }
};

export default createReducer(Object.assign({}, InitialState), CREATE_QUESTION, {
  [`${CREATE_QUESTION}_UPDATE`]               : createQuestionUpdate
});



3.
Как вы хендлите формы?

Например у меня на проекте в одной компоненте есть +-5-7 инпутов, и на каждый из них повешан onChange по типу
Пример
export const onChange = (e, val = "value") => dispatch => {
  let type = e.target.name; //actionType
  let property = e.target.id;
  let value = e.target[val]; // input value
  let { errors } = validate[type]({ [property]: value }); // error object for all related inputs

  dispatch([
    {
      type: type,
      payload: { [property]: value }
    },
    {
      type: `${type}_ERROR`,
      payload: {
        errors: { [property]: get(errors, property) }
      }
    }
  ]);
};

который изменяет нужную филду в нужном стейте. Нормально ли это?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. Сами
2. Пишем ручками (+10 к читаемости, +10 к статическому анализу, -100 к когнитивной нагрузке) Конечно в случае если вы пишите dashboard с кучей моделей, имеет смыл написать CRUD Boilerplate
3. В 99.99% случаев хранение состояния форм в store бессмысленно и неоправданно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы