<div id="root"></div>
body {
padding: 20px;
}
.item {
display: flex;
gap: 10px;
margin-bottom: 10px;
}
View Compiled
import React, {useState} from 'https://esm.sh/react@18.2.0'
import ReactDOM from 'https://esm.sh/react-dom@18.2.0'
function App() {
const [items, setItems] = useState(["Item 1", "Item 2", "Item 3"]);
const updateItem = (index) => {
// Immutable update
setItems(items.with(index, `Updated item ${index + 1}`));
};
return (
<ul>
{items.map((item, index) => (
<li key={index} className="item">
<button onClick={() => updateItem(index)}>Update</button>
<span>{item}</span>
</li>
))}
</ul>
);
}
ReactDOM.render(<App />,
document.getElementById("root"))
View Compiled
This Pen doesn't use any external JavaScript resources.