export default function App() {
const [list, setList] = useState([
{
id: uuid(),
name: "",
isRemovable: true,
},
]);
const [newRowValue, setNewRowValue] = React.useState("");
const [newRowIsRemovable, setNewRowRemovable] = React.useState(true);
const removeItem = (removeId) => {
setList((prevState) => prevState.filter(({ id }) => id !== removeId));
};
const addNewRowItem = (e) => {
e.preventDefault();
setList((prevState) => [
...prevState,
{
id: uuid(),
name: newRowValue,
isRemovable: newRowIsRemovable,
},
]);
setNewRowValue("");
setNewRowRemovable(true);
};
return (
<div className="app">
{list.length > 0 ? (
list.map(({ id, name, isRemovable }) => (
<div className="uk-card uk-card-default uk-card-body" key={id}>
<>
<form
className="uk-card uk-card-default uk-card-body"
onSubmit={addNewRowItem}
>
<Input
placeholder="Add a new row..."
value={newRowValue}
handleChange={(e) => setNewRowValue(e.target.value)}
/>
</form>
{isRemovable && (
<Button
color="danger"
type="button"
handleClick={() => removeItem(id)}
>
Remove
</Button>
)}
</>
</div>
))
) : (
<div>(Empty List)</div>
)}
<form
className="uk-card uk-card-default uk-card-body"
onSubmit={addNewRowItem}
>
<Button
className="uk-margin-small-bottom"
color="secondary"
type="submit"
>
Add Row
</Button>
</form>
</div>
);
}
我正试图通过单击添加行来添加新行,但当用户在输入中输入值时,将应用相同的值.
如何使每个对象动态输入并推送到array.
当我呼叫addNewRowItem
时,我可以添加新项目,但我为第一个输入输入的值也会为新输入复制相同的值