У меня есть компонент React, который извлекает данные при первой загрузке.
const [data, setDate] = useState(null);
const [originalData, setOriginalData] = useState(null);
useEffect(() => {
async function fn() {
let res = await getObject();
setData({...res});
setOriginalData({...res});
}
fn();
}, [])
Я вызываю 2 разных хука для установки состояний data
и originalData
.
Цель это значит, что у меня есть неизменная версия данных, к которой я могу обратиться для некоторых из logi c в компоненте.
Однако, когда я изменяю состояние data
, кажется, что также меняю состояние originalData
, и я ничего не буду вызывать.
const change() => {
let updatedData = {...data};
updatedData.someProperty = 'newValue';
setData(updatedData);
}
Я бы ожидал, что данные теперь содержат свойство someProperty
со значением newValue
, и что originalData
будет быть неизменным от начальной нагрузки.
Но когда я сравниваю их, data
и originalData
оба теперь имеют someProperty
.
Может ли кто-нибудь указать мне правильное направление?
РЕДАКТИРОВАТЬ: добавить оператор распространения