MUI Datatables have a function like this :
onChangePage
Callback function that triggers when a page has changed. function(currentPage: number) => void
I have an API for pagination purpose like this
users?limit=10&start=0&search=
How can i make server side rendering for pagination in mui-datatables for react js ?
You can connect the table to API like this (it's from official examples):
import React from "react";
import ReactDOM from "react-dom";
import MUIDataTable from "mui-datatables";
class App extends React.Component {
state = {
page: 0,
count: 100,
data: []
};
componentDidMount() {
this.getData();
}
// get data
getData = () => {
this.xhrRequest().then(data => {
this.setState({ data });
});
};
// mock async function
xhrRequest = () => {
return new Promise((resolve, reject) => {
const srcData = [
["Gabby George", "Business Analyst", "Minneapolis"],
["Aiden Lloyd", "Business Consultant", "Dallas"],
["Jaden Collins", "Attorney", "Santa Ana"],
["Franky Rees", "Business Analyst", "St. Petersburg"],
["Aaren Rose", "Business Analyst", "Toledo"]
];
const maxRound = Math.floor(Math.random() * 2) + 1;
const data = [...Array(maxRound)].reduce(
acc => acc.push(...srcData) && acc,
[]
);
data.sort((a, b) => 0.5 - Math.random());
setTimeout(() => {
resolve(data);
}, 250);
});
};
changePage = page => {
this.xhrRequest(`/myApiServer?page=${page}`).then(data => {
this.setState({
page: page,
data
});
});
};
render() {
const columns = ["Name", "Title", "Location"];
const { data, page, count } = this.state;
const options = {
filter: true,
filterType: "dropdown",
responsive: "stacked",
serverSide: true,
count: count,
page: page,
onTableChange: (action, tableState) => {
console.log(action, tableState);
// a developer could react to change on an action basis or
// examine the state as a whole and do whatever they want
switch (action) {
case "changePage":
this.changePage(tableState.page);
break;
}
}
};
return (
<MUIDataTable
title={"ACME Employee list"}
data={data}
columns={columns}
options={options}
/>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
You can rewrite getData and changePage methods with the correct structure for your API. I prefer Axios HTTP client for this communication.
Also I add this example as working demo.