How to add new row on button click in react js?
August 16, 2024Hi Friends π,
Welcome To aHoisting!
To add new row on button click in react js, you can use setRows([...rows, { id: rows.length + 1, name: '', age: '' }]);
. It will add new row on button click in react js.
Today, I am going to show you, how to add new row on button click in react js.
Table of contents
- Install and create a new React app.
- Import react component.
- Create a Component.
Letβs start with the first step.
Step 1: Install and create a new React app.
First you have to install the React project. You should use create-react-app
command to create a new React project.
npx create-react-app my-app
cd my-app
npm start
Step 2: Import react component.
After installing, you have to import your React component.
import React, { useState } from 'react';
Step 3: Create a Component.
You can use setRows([...rows, { id: rows.length + 1, name: '', age: '' }]);
to add new row on button click in react js.
<div>
<h3>Dynamic Rows</h3>
<table border="1" style={{ width: '100%', textAlign: 'left' }}>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
{rows.map((row, index) => (
<tr key={index}>
<td>{row.id}</td>
<td>
<input
type="text"
name="name"
value={row.name}
onChange={(event) => handleInputChange(index, event)}
/>
</td>
<td>
<input
type="number"
name="age"
value={row.age}
onChange={(event) => handleInputChange(index, event)}
/>
</td>
</tr>
))}
</tbody>
</table>
<button onClick={addRow}>Add Row</button>
</div>
Add new row on button click example.
The below code is an example of a React. You have to import react
and set setRows([...rows, { id: rows.length + 1, name: '', age: '' }]);
to add new row on button click in react js.
App.js
import React, { useState } from 'react';
function Add() {
const [rows, setRows] = useState([]);
const addRow = () => {
setRows([...rows, { id: rows.length + 1, name: '', age: '' }]);
};
const handleInputChange = (index, event) => {
const { name, value } = event.target;
const newRows = [...rows];
newRows[index][name] = value;
setRows(newRows);
};
return (
<div>
<h3>Dynamic Rows</h3>
<table border="1" style={{ width: '100%', textAlign: 'left' }}>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
{rows.map((row, index) => (
<tr key={index}>
<td>{row.id}</td>
<td>
<input
type="text"
name="name"
value={row.name}
onChange={(event) => handleInputChange(index, event)}
/>
</td>
<td>
<input
type="number"
name="age"
value={row.age}
onChange={(event) => handleInputChange(index, event)}
/>
</td>
</tr>
))}
</tbody>
</table>
<button onClick={addRow}>Add Row</button>
</div>
);
}
export default Add;
In the above code example, I have used the setRows([...rows, { id: rows.length + 1, name: '', age: '' }]);
to add new row on button click in react js.
Check the output of the above code.
All the best π