刚开始使用 React 并且在尝试更改 Textfield 以更新状态时遇到了一些麻烦。使用使用 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
}
}