Как правильно изменить одно из значений объекта состояния с помощью useState React

Я пытаюсь изменить свое состояние с помощью хука useState. Мой крючок выглядит так.

const [data, setData] = useState(initialDataState);

Начальное состояние:

const initialDataState = {
  EMAIL_TYPE: "",
  NAME_TYPE: "",
  GENDER_TYPE: "",
  ZIP_TYPE: "",
  DEVICES_TYPE: []
};

Я вызываю setData из функции с двумя реквизитами типа состояния для изменения и значения. Моя функция:

const handleChange = (key, value) => {
    setData(prevState => {
      return { ...prevState, ...(prevState[key] = value) };
    });
  };

В РЕЗУЛЬТАТЕ, когда я вызываю свою функцию handleChange, я не могу правильно изменить значение, потому что не могу получить правильный ключ в prevState.

Мой вопрос: "Как правильно изменить состояние в случаях, когда вы получаете ключ, в котором вы хотите изменить значение без изменения состояния"


person Romanenko27    schedule 19.05.2020    source источник
comment
изменить return { ...prevState, ...(prevState[key] = value) }; на return { ...prevState, prevState[key]: value };   -  person Junius L.    schedule 19.05.2020


Ответы (1)


Вам нужно передать существующее состояние и ключ, который вы хотите обновить

const handleChange = (key, value) => {
  setData(prevState => {
    return {
      ...prevState,
      [key]: value
    };
  });
};
person Junius L.    schedule 19.05.2020