Впервые в использовании React и возникли проблемы при попытке внести изменения в текстовое поле для обновления состояния. Использование функционального компонента, в котором начальное состояние устанавливается с помощью useState.
Я уверен, что мне просто не хватает чего-то простого ... но, наконец, сдаюсь и прошу помощи.
Вот полный код для функционального компонента:
import React, { useState } from 'react';
import Step1 from '../Element/FormStep1';
const NewForm = () => {
let [object, setObject] = useState({
property: {
entry: 'string'
}
});
function handleChange(event) {
const {name, value} = event.target;
setObject({
...object,
[name]: value
})
console.log(object)
};
return (
<form>
<Step1
handleChange={handleChange}
object={object}
/>
</form>
);
}
export default NewForm
И для компонента формы:
import React from 'react';
import TextField from '@material-ui/core/TextField';
import t from 'typy'
export default function Step1(props) {
return(
<React.Fragment>
<TextField
name={t(props.object, 'property.entry').safeObject}
type='text'
onChange={props.handleChange}
/>
</React.Fragment>
);
}
Когда выполняется функция handleChange вместо замены цели свойство, оно создает новое свойство с исходным значением в качестве имени, т.е.
object {
property: {
entry: 'string'
},
string: value //Text input
}
Намерение состоит в том, чтобы заменить значение 'строка' текстовым вводом.
object {
property: {
entry: 'value' //Text input
}
}