javascript - 将旧信息放入表单后无法向我的表单插入新输入
问题描述
我有一个完整的表格,其中包含从数据库请求的信息。但是表格不允许我更新表格,我不能在输入上写任何东西。我用错了什么?
在 Graphql 查询之后,标题存储在 jsonFromDataBase 变量中。如果查询是空的,我不想在我的输入中输入任何内容,如果不是,我想要标题,但我也希望能够更改它。问题是标题不允许写任何东西
这是我的代码的样子:
const Form = () => {
useEffect(() => {
KeyUtils.resetGenerator();
}, []);
const [newTitle, setNewTitle] = useState("");
return (
<Title
type="text"
value={jsonFromDataBase.title ? jsonFromDataBase.title : newTitle}
placeholder="Title"
onChange={e => {
setNewTitle(e.target.value);
}}
required
/>
)
}
const Title = styled.input`
margin-bottom: 10px;
padding: 10px;
border: 1px solid white;
`;
export default Form;
解决方案
问题是受控输入与非受控输入。
由于您是从初始(我假设?)ajax / web 查询中设置值,因此您似乎setNewTitle
没有更新jsonFromDataBase.title
- 或者如果是,您需要在 onChange 处理程序中再次获取值。
如果您想使用受控输入(即,使用value
and处理onChange
),那么您应该让您对数据库的初始调用填写state
- 而不是直接填写值。
如果你想使用不受控制的输入,你可以为输入设置一个默认值,而不用使用defaultValue
prop 将其更改为受控输入,而不是value
.
推荐阅读
- python - codeshef atm问题python中的运行时错误
- python - 从给定的数字列表中获取“n”个数字,它们之间的差异最小
- c# - C# File.AppendText(path) 访问路径被拒绝
- python - prompt-toolkit:对齐 VSplit 的子项
- javascript - 检查对象是否包含 Javascript 中称为 format 的属性
- python - 为什么我的制作人同步工作?
- flutter - Flutter,为什么在 fromJson 方法中使用“静态”?
- javascript - where子句中的mysql列'id'不明确
- javascript - curr 在对象数组的 reduce 中未定义
- java - 计算地图减少中所有字母的出现概率