【发布时间】:2021-09-20 15:47:37
【问题描述】:
我面临的问题真的很烦人,当我尝试编辑输入文本的默认值时,输入字段不会输入我的更改,或者只有在输入第一个字符后才会失去焦点,它会返回它是默认值。但请注意,这只发生在我添加 onChange 事件时。如果我删除它,输入工作正常。发生了什么
const AddMaker = () => {
const [make, setMake] = useState();
function ConditionalTableRow(props) {
let { item, index } = props;
if ( index === editModeIndex)
return (<TableRowWithSave item={item} index={index} />)
else
return (<TableRowWithEdit item={item} index={index} />)
}
function TableRowWithSave(props) {
let { item } = props;
return (
<TableRow>
<TableCell>
<input type="text" defaultValue={item.make} onChange={e => setMake(e.target.value)} />
</TableCell>
<TableCell>
<button className="palletSaveButton" onClick={handleSaveClick}> Save </button>
</TableCell>
</TableRow>
)
}
return (
<TableBody>
{
records.map((item, index) => (
<ConditionalTableRow key={index} item={item} index={index} />
))
}
</TableBody>
);
}
【问题讨论】:
-
在我看来,通过闭包而不是在 props 中传递它来访问父状态的相互定义组件确实是错误的。
-
我不确定在函数组件中定义函数组件是个好主意
-
同意你们。这不是您想要遵循的模式。你不会在适当的 React 应用程序中看到它。
标签: javascript html reactjs