单击CLOSS BTN时,如何清空数组的输入字段?
我有一个弹出窗口,可以在其中添加属性无限。问题是当我单击“关闭”按钮时,数据阵列正在更新,但在输入字段中它并没有空置。我是一个新手可以做出反应。请我找到解决方案。
import React from "react";
import { useState } from "react";
import { useEffect } from "react";
export default function Property(props) {
const [Data, setData] = useState([{}]);
const { setProperties } = props;
useEffect(() => {
setData(Data)
},[Data])
console.log(Data)
return (
<div className='PinputBody'>
<p className='P-body-Heading-text'>
Properties show up underneath your item, are clickable, and can be
filtered in your collection's sidebar.
</p>
<form className='Property-Input-Area'>
<div className='property-grid property-input-header'>
<p className='property-input-header-text'>Type</p>
<p className='property-input-header-text'>Name</p>
</div>
{Data.map((items, index) => (
<div key={index} className="property-grid property-input">
<p className="grid-input grid-flex bdl">
<div className="delete-input">
<i className="bx bx-x DeleteClose"
onClick={() => {
let data = Data;
data.splice(index, 1);
setData(data);
props.setData(data)
// setName('');
// setType('');
}}
></i>
</div>
<input type="text" className="input-delete-field" placeholder="Enter the prop type"
value={items?.name}
onChange={(e) => {
let data = Data;
data[index].name = e.target.value;
setType(e.target.value);
setData(data);
props.setData(data)
}} />
</p>
<p className="grid-input bdr">
<input type="text" placeholder="Enter the prop name"
value={items?.value}
onChange={(e) => {
let data = Data;
data[index].value = e.target.value;
setName(e.target.value);
setData(data);
props.setData(data)
}} />
</p>
</div>
))}
<button type="button" className='Add-more-Btn' onClick={() => { setData([...Data, {}]) }}>
Add More
</button>
</form>
</div>
);
}
预先感谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的问题是您正在使用
data.splice(index, 1);
但您没有为其重新分配一个新数组修复可能是
如果您不想删除它但空值,你可以这样做
与你的编辑字段类似的问题
你也需要为编辑的数据分配一个新对象
完整的代码可以
The problem here is that you're using
data.splice(index, 1);
but you don't reassign a new array to itThe fix could be
If you don't want to delete it but empty values, you can do it this way
Similar problem to your edit fields
You need to assign a new object to the edited data too
Full code can be