javascript - 状态更改时 TextField 失去焦点
问题描述
我是根据按钮点击动态创建表单,所以当用户按下按钮时,表单会生成一个新的 id。所以,我像这样为 createform 计数器创建了一个状态,
const [formmakersno, setFormmakersno] = useState([0]);
在我的渲染中,我有这样的东西:
{formmakersno.map((no) => {
return formDetails;
})}
我的“formDetails”是 jsx 的常量,它只返回文本字段和按钮等表单元素。一切正常,每次单击按钮时,表单都会按预期生成,但是,我想在每次创建新表单时传递计数器编号,作为道具,因为当它只是一个返回的 const 时我不能这样做一个 jsx,我将它转换为箭头函数,以便我可以传递道具并像这样传递它:
{formmakersno.map((no) => {
return <formDetails value={no} />;
})}
而且我也可以访问道具,但问题是,每次我在文本字段中输入每个字母时,文本字段都会失去焦点,因为它是一个每次都会呈现的组件,因为我正在调用一个内部状态更改的 Onchange 方法. 有解决方法吗?
编辑:我创建了这个简单的例子来进一步说明我面临的问题:
export const CreatePush2 = () => {
const [titles, setTitles] = useState(["", ""]);
const [numbers, setNumbers] = useState([0, 1, 2]);
const handleChange = (e, id) => {
const { value } = e.target;
let titles_1 = [...titles];
let titles_11 = titles_1[id];
titles_11 = value;
setTitles(titles_1);
console.log(titles);
};
const InputCreator = ({ id }) => {
return (
<form>
<input type="text" onChange={(e) => handleChange(e, id)} value={titles[id]} />
<br />
</form>
);
};
return (
<div>
{numbers.map((number) => {
return <InputCreator key={number.toString()} id={number} />;
})}
</div>
);
};
export default CreatePush2;
输入每个字母时,文本字段都会失去焦点。
解决方案
推荐阅读
- linux - 使用多个选项卡和不同命令打开新的 gnome-terminal (v3.28+)
- angular - 响应 rxjs 取消订阅
- angular - 如何将 params.get('brand') 分配给以下函数中的变量?
- ruby-on-rails - 多态关联如何在 New 操作中获取其 imageable_id 值?
- c# - 根据 SVG (XML) 文件中的子元素文本获取子元素的属性值
- jqgrid - free-jqGrid 4.15.6 ExpandNode 产生运行时错误
- javascript - 单击 NavItem 以在 React/Materilize 中显示弹出窗口/模态框
- momentjs - 使用 momentjs 计算错误的日期差异
- laravel - Laravel 关系一对多得到结果加入
- blockchain - Corda 节点与派对澄清