Чтобы еще больше добавить к ответу Маддо, если вы подумаете об этом, в конце концов, React Component на самом деле представляет собой обычную функцию, которая вызывается в какой-то момент:
export function ProjectDetails(props)
Итак, когдавызывается функция, переменные внутри ее области просто хранят значение того, что было там, когда была вызвана функция (скажем, при этом запуске рендера):
const [ values, setValues ] = useState(...); // <-- values is const
По существу, values
won 't изменяется в текущем «прогоне» и только после следующего визуализации компонента.Обратите внимание, что он даже объявлен как const
, чтобы убедиться, что мы не можем его трогать;)
Каков результат console.log (значения) здесь?
Если сомневаетесь, консоль.Журнал может быть вашим другом (оповещение еще веселее!)
const handleInputFieldChange = field_name => event => {
setValues({ ...values, [field_name]: event.target.value });
// -> what is the result of values here ? (hint: values is const)
console.log('values is:', JSON.stringify(values));
props.dispatch({ type: 'PLEASE_WORK', payload: values });
};
Я предпочитаю делать это, просто помещая все в новую переменную, чтобы убедиться, что мы используем это:
const handleInputFieldChange = field_name => event => {
const newValues = { ...values, [field_name]: event.target.value };
setValues(newValues);
props.dispatch({ type: 'PLEASE_WORK', payload: newValues });
};
Это облегчает понимание кода: вы создали новое значение, установили его в состояние, а затем отправили с ним действие.
Надеюсь, это имеет смысл!