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
|
function Item(props) {
const item = typeof props.value === 'object' ? props.value : {};
return (
<tr>
<td>{props.index}</td>
<td><input type="text" value={item.name || ''} onChange={e => props.onChange({...props.value, name: e.target.value })}/></td>
<td><input type="text" value={item.min || ''} onChange={e => props.onChange({...props.value, min: e.target.value })}/></td>
<td><input type="text" value={item.max || ''} onChange={e => props.onChange({...props.value, max: e.target.value })}/></td>
<td><input type="text" value={item.weight || ''} onChange={e => props.onChange({...props.value, weight: e.target.value })}/></td>
</tr>
)
}
export default function App() {
const [data, setData] = useState([0, 1, 2]);
function setDataAtIndex(index, value) {
setData([...data.slice(0, index), value, ...data.slice(index + 1, data.length)]);
}
return (
<div>
<table>
{ data.map((item, index) => (
<Item index={index} value={item} onChange={e => setDataAtIndex(index, e)}/>
))}
</table>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
} |
Partager