изменить спецификацию c значение объекта с отправкой - PullRequest
0 голосов
/ 17 января 2020

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

enter image description here

это ошибка initstate

export const errorsInitState = {
  errors: {
    email: {
      msg: ""
    },
    password: {
      msg: ""
    },
    confirmPassword: {
      msg: ""
    }
  }
};

я пробовал это, но у меня это не сработало

export const RegisterReducer = (state = errorsInitState, action) => {
  const { type, payload } = action;
  switch (type) {
    case FAILIED_REGISTRATION:
      return {
        ...state,
        errors: {
          ...state.errors,
          errors: payload.map(err =>
            err.param === "email"
              ? { ...err, msg: err.msg }
              : err.param === "password"
              ? { ...err, msg: err.msg }
              : err.param === "confirmPassword"
              ? { ...err, msg: err.msg }
              : ""
          )
        }
      };
  }
};

1 Ответ

2 голосов
/ 17 января 2020

Это не очень хороший вариант использования для такого количества ES6 сумасшедшего строительства. Попробуйте вместо этого:

const RegisterReducer = (state = errorsInitState, action) => {
  const { type, payload } = action;
  switch (type) {
    case FAILIED_REGISTRATION:
      return { 
        errors: {
          ...state.errors,
          ...payload.reduce((obj, { param, ...rest }) => {
            obj[param] = { ...rest };
            return obj;
          }, {})
        }
      };
  }
};

//code below is for demonstration
var errorsInitState = { errors: { email: { msg: "" }, password: { msg: "" }, confirmPassword: { msg: "" } } };
var FAILIED_REGISTRATION = 1;
var errors = [ { msg: "Email is required", param: "email" }, { msg: "Please entre a password with 6 or more characters", param: "password" } ];

console.log(RegisterReducer(errorsInitState, { type: FAILIED_REGISTRATION, payload: errors }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...