Home > Article > Backend Development > How to build a reusable table component using Go and React
As the complexity of web applications continues to increase, tables have become one of the necessary components of many web applications. However, building a powerful and easy-to-maintain table requires a significant investment of time and effort. To solve this problem, we can use Go language and React to build a reusable table component for use in multiple projects.
In this article, we will introduce how to build table components using Go language and React, so that you can easily reuse them in your projects.
Before we start building table components, we need to understand some basic concepts. The table component usually consists of the following parts:
If you have not installed Go language and React, please install them first. You can download and install them from the following links:
After the installation is complete, please ensure that your Go version is not lower than 1.11, and your React version is not lower than 16.x.
Now, let’s create a basic table component. We will create a component using React and process the data in the background using Go language. First, we need to create a new Go language project in the command line:
$ mkdir my-table-app $ cd my-table-app $ go mod init my-table-app
Then, we need to create a new React component in the project. In the root directory of the project, execute the following command:
$ npx create-react-app my-table-app $ cd my-table-app
Now that we have created a React project, let's write a basic table component. Create a file named "Table.js" in the src directory. In this file, we will write code to create a basic table.
import React from 'react'; function Table(props) { return ( <> <table> <thead> <tr> {props.columns.map(column => ( <th>{column}</th> ))} </tr> </thead> <tbody> {props.rows.map(row => ( <tr> {Object.values(row).map(value => ( <td>{value}</td> ))} </tr> ))} </tbody> </table> </> ); } export default Table;
In this component, we receive two properties: columns and rows. The columns attribute is an array containing the titles of all columns in the table, and the rows attribute is an array containing the data of all rows in the table. In the component, we use the map() function to iterate through this data and render them into a table.
Next, we need to implement an interface in the Go language to obtain table data. In Go language, we can use gin framework to easily create RESTful API. First, we need to install the gin framework in the project. Execute the following command in the command line:
$ go get -u github.com/gin-gonic/gin
Then, create a file named "main.go" in the project root directory and write the following code:
package main import ( "net/http" "github.com/gin-gonic/gin" ) type Row struct { ID int Name string Age int Location string } var rows = []Row{ {1, "John", 28, "New York"}, {2, "Jane", 32, "Chicago"}, {3, "Mary", 24, "San Francisco"}, {4, "Bob", 41, "Miami"}, } func main() { r := gin.Default() r.GET("/api/rows", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "rows": rows, }) }) r.Run(":8080") }
In this file , we define a structure named Row, which contains four attributes: ID, Name, Age and Location. Then, we define an array rows, which contains the data of all rows in the table. Next, we created an API interface called "/api/rows" that will return data for all rows when the request arrives. Finally, we started our API service using the r.Run(":8080") method.
Now, we have completed writing the table component and data acquisition interface. Let's put them together to implement a complete table application. First, execute the following command in the root directory of the React project to install Axios and React Table component libraries:
$ npm install axios react-table
Then, we need to create a file named "App.js" in the src directory and write Enter the following code:
import React, { useState, useEffect } from 'react'; import axios from 'axios'; import Table from './Table'; import './App.css'; import 'react-table/react-table.css'; function App() { const [columns, setColumns] = useState([]); const [rows, setRows] = useState([]); useEffect(() => { axios.get('/api/rows').then(response => { setColumns(Object.keys(response.data.rows[0])); setRows(response.data.rows); }); }, []); return ( <div className="App"> <h1>My Table App</h1> <Table columns={columns} rows={rows} /> </div> ); } export default App;
In this component, we use useState() and useEffect() hooks to manage the state of the component. In useEffect(), we use the Axios library to send a GET request to our API interface and set the response data to the component's state in the callback function. Finally, we render the table onto the page by passing this state data into the table component we created earlier.
In this article, we built a reusable table component using Go language and React and created a simple web application to showcase it . By using these techniques, we can easily reuse table components and reduce the time and effort of writing table code in different projects. If you want to learn more about the Go language and React, please refer to the official documentation.
The above is the detailed content of How to build a reusable table component using Go and React. For more information, please follow other related articles on the PHP Chinese website!