1.頁面的結構
-
//遍歷list, 返回數據
-
let listBody= this.state.list.map((user,index)=> {
-
return (
-
<tr key={index}>
-
<td>{user.id}</td>
-
<td>{user.username}</td>
-
<td>{user.email}</td>
-
<td>{user.phone}</td>
-
<td>{new Date(user.createTime).toLocaleString()}</td>
-
</tr>
-
)
-
});
-
//當this.state.list.length<=0,第一次加載的時候firstLoading=true,顯示"正在加載數據"
-
//當this.state.list.length<=0,第一次加載的時候firstLoading=false,顯示"正在加載數據"
-
let listError=(
-
<tr>
-
<td colSpan="5" className="text-center">
-
{this.state.firstLoading ?"正在加載數據....." : "沒有找到相應的結果"}
-
</td>
-
</tr>
-
)
-
let tableBody=this.state.list.length > 0 ? listBody:listError;
-
return (
-
<div id="page-wrapper">
-
<PageTitle title="用戶列表"/>
-
<div className="row">
-
<table className="table table-striped table-bordered">
-
<thead>
-
<tr>
-
<th>ID</th>
-
<th>用戶名</th>
-
<th>郵箱</th>
-
<th>電話</th>
-
<th>注冊時間</th>
-
</tr>
-
</thead>
-
<tbody>
-
{
-
tableBody
-
}
-
</tbody>
-
</table>
-
</div>
-
{/* 分頁組件 */}
-
<Pagination current={this.state.pageNum}
-
total={this.state.total}
-
onChange={(pageNum) => {this.onPageNumChange(pageNum)}}/>
-
</div>
-
);
2.用戶列表接口/manage/user/list.do ,請求數據為,pageNum和pageSize, pageSize默認為10,所以只需要傳入當前頁pageNum就可以了
-
this.state={
-
list:[],
-
pageNum:1,
-
//判斷是不是第一次加載
-
firstLoading:true
-
}
請求后台數據
-
//當頁碼掛載之后請求數據
-
componentDidMount(){
-
this.loadUserList();
-
}
-
loadUserList(){
-
_user.getUserList(this.state.pageNum).then(res => {
-
//res替換了state
-
this.setState(res,() => {
-
//第一次加載的時候把firstLoading設置為false
-
this.setState({
-
firstLoading:false
-
})
-
});
-
},errMsg =>{
-
this.setState({
-
list : []
-
});
-
_mm.errorTips(errMsg);
-
})
-
}
3.當頁碼改變的時候觸發onChange事件,調用onPageNumChange函數,傳入當前頁pageNum,更新state里邊的pageNum
-
//當頁數變化的時候改變pageNum
-
onPageNumChange(pageNum){
-
//setSate是個異步函數
-
this.setState({
-
pageNum : pageNum
-
},() => {
-
//當頁碼更新了重新請求每頁的記錄,后台返回數據是根據頁碼返回的
-
this.loadUserList();
-
})
-
}