How To Create an Editable Text Field in Table Using ReactJS

share link

by vsasikalabe dot icon Updated: Jan 31, 2023

technology logo
technology logo

Solution Kit Solution Kit  

An editable table is one that can be edited as per the user’s requirements. A table displays a particular set of data in rows and columns. We can add or delete the tuples or columns. We can also change the style of the table by adjusting the width, colors, etc. For creating an editable table, we can use the useState hook of ReactJs that allows you to have local/state variables to functional components. 


  • The function takes the initial state as a parameter and returns a variable and a required function to update that state. 
  • Initially, the table will be in non-edit mode. On clicking the Edit button, the table will be in editing mode, which means you can add or delete as many tuples as you need. 
  • We can also edit the content of the table by selecting a particular cell. 
  • We can also add an alert message displayed when the user saves the data or a confirmation message if the user clicks on the delete button. 

There are many uses for Editable tables. Hospitals can use them to maintain records of their patients, OR schools/ colleges to keep records of students. When a new student is admitted, a new record can be added, and when someone leaves the school, that record can be deleted. 

 

For creating an editable table using ReactJS, look at the code below.

Preview of the output that you will get on running this code from your IDE.


Code:

In this solution we use the React library.

import React, {Component} from 'react';

export class AppComponent extends Component {
    state = {
        movieDetails: [
            {
                "id": 9001,
                "name": "Dead Pool",
                "rating": 8.0
            },
            {
                "id": 9002,
                "name": "The Emoji Movie",
                "rating": 1.5
            },
            {
                "id": 9003,
                "name": "Dunkirk",
                "rating": 8.5
            }
        ],
        currentValue: "",
        edit: null,
        errorMessage: "",
        successMessage: "",
        buttonActive: false
    };


    updateRating = (movie, index) => {
        const confirmation = window.confirm("Do you want to update rating: " + this.state.currentValue);
        if (confirmation) {
            this.setState(state => {
                const movies = [...state.movieDetails];
                movies[index] = {...movies[index], rating: state.currentValue};
                return {movieDetails: movies};
            });
        }
    };

    handleChange = (event, movie) => {
        movie.rating = event.target.value;
        // this.setState({})
        console.log(movie, event.target.value);
    };

    getMovieDetails = () => {

        return this.state.movieDetails.map((movie, index) => {
            return (
                <tr key={movie.id}>
                    <td>{movie.id}</td>
                    <td>{movie.name}</td>
                    <td>
                        <input
                            type="text" name={"rating" + (index + 1)}
                            onFocus={() => this.setState({edit: index, currentValue: movie.rating})}
                            onBlur={() => this.setState({edit: null})}
                            value={this.state.edit === index ? this.state.currentValue : movie.rating}
                            onChange={(e) => this.setState({currentValue: e.target.value})}/>
                    </td>
                    <td>
                        <button onClick={() => this.updateRating(movie, index)}>
                            Update
                        </button>
                    </td>
                </tr>
            )
        })
    };

    render() {
        return (
            <div className="row ">
                <div className="col-md-6 offset-md-3 ">
                    <br></br>
                    <h1 className="text-center">Update Rating</h1>
                    <table id="movies">
                        <thead>
                        <tr>
                            <th>Movie Id</th>
                            <th>Movie Name</th>
                            <th>Rating</th>
                            <th>Action</th>
                        </tr>
                        </thead>
                        <tbody>
                        {this.getMovieDetails()}
                        </tbody>
                    </table>
                </div>
            </div>
        )
    }
}

Instructions

Follow the steps carefully to get the output easily.

  1. Install the Node.js and React on your IDE(preferable Visual Studio Code).
  2. Create React Application using npx create-react-app foldername.
  3. cd foldername.
  4. Open the folder in IDE.
  5. Copy the code using "copy" button above and paste it in App.js file(remove the earlier code from App.js).
  6. Add export default AppComponent to the last line of the code.
  7. Open the terminal from IDE.
  8. npm start to run the file.


I hope you found this useful. I have added the link to dependent libraries, version information in the following sections.


I found this code snippet by searching for 'Create Editable Table using Reactjs' in kandi. You can try any such use case!

Environment Tested

I tested this solution in the following versions. Be mindful of changes when working with other versions.

  1. The solution is created in VS Code 1.73.1 version.
  2. The solution is tested on Nodejs 16.14.2 version.
  3. react 18.2.0 version.


Using this solution, we are able to Create Editable Table using Reactjs with simple steps. This process also facilities an easy way to use, hassle-free method to create a hands-on working version of code which would help us to Create Editable Table using Reactjs.

Dependent Libraries

create-react-appby facebook

JavaScript doticonstar image 100082 doticonVersion:v5.0.1doticon
License: Permissive (MIT)

Set up a modern web app by running one command.

Support
    Quality
      Security
        License
          Reuse

            create-react-appby facebook

            JavaScript doticon star image 100082 doticonVersion:v5.0.1doticon License: Permissive (MIT)

            Set up a modern web app by running one command.
            Support
              Quality
                Security
                  License
                    Reuse

                      You can search for any dependent library on kandi like 'react'.

                      Support

                      1. For any support on kandi solution kits, please use the chat
                      2. For further learning resources, visit the Open Weaver Community learning page.

                      See similar Kits and Libraries