-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdynamicFields.js
More file actions
41 lines (32 loc) · 924 Bytes
/
Copy pathdynamicFields.js
File metadata and controls
41 lines (32 loc) · 924 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { useState } from "react";
export default function DynamicFields() {
const [skills, setSkills] = useState([""]);
const handleChange = (index, value) => {
setSkills((prev) =>
prev.map((skill, i) => (i === index ? value : skill))
);
};
const addField = () => {
setSkills((prev) => [...prev, ""]);
};
const removeField = (index) => {
setSkills((prev) => prev.filter((_, i) => i !== index));
};
return (
<div>
<h2>Skills</h2>
{skills.map((skill, index) => (
<div key={index}>
<input
value={skill}
onChange={(e) => handleChange(index, e.target.value)}
placeholder="Enter skill"
/>
<button onClick={() => removeField(index)}>Remove</button>
</div>
))}
<button onClick={addField}>Add Skill</button>
<pre>{JSON.stringify(skills, null, 2)}</pre>
</div>
);
}