React實現(xiàn)分頁效果
本文實例為大家分享了React實現(xiàn)分頁效果的具體代碼,供大家參考,具體內(nèi)容如下
首先確保已經(jīng)安裝了antd,axios
jsx文件:
import React, { useState, useEffect } from 'react'
import { Pagination } from 'antd';
import './loading.scss'
import Unit from '../hml'
const App = () => {
// 設(shè)置第幾頁
const [num, setNum] = useState(1)
// 獲取的數(shù)據(jù)載體
const [data, setData] = useState([])
//剛才用掛載方法,二次獲取不好用
useEffect(() => {
Unit.getApi2('/home/mediareports', {
// 數(shù)據(jù)頁
page_number: num,
// 每頁多少數(shù)據(jù)
page_size: 10
}, {}).then((res) => {
//獲取數(shù)據(jù)
setData(res.data.data)
})
}, [num])
const add = (e) => {
//每次點擊向前翻一頁
setNum(e)
}
return (
<>
<ul>
{/* map生成數(shù)據(jù) */}
{
data.map((item,index)=>{
return <a href={item.jump_url} key={index}><br />
{
item.main_title
}
</a>
})
}
</ul>
{/* 這里的問題雖然解決了,但是不知道為什么上傳 e 能獲取當(dāng)前點擊的下標(biāo)而不是元素,不過我感覺應(yīng)該和total有關(guān) */}
<Pagination defaultCurrent={num} total={500} onChange={(e)=>add(e)}/>
</>
)
}
export default App
loading.scss文件:
// antd沒有樣式,下面代碼可以解決這個問題 @import '~antd/dist/antd.css';
hml.js:(這就是我發(fā)的那個axios封裝)
import axios from 'axios';
const Unit = {
async getApi(ajaxCfg){
let data = await axios.get(ajaxCfg.url,{params:ajaxCfg.cfg},
{
headers: ajaxCfg.headers
})
return data;
},
async getApi2(url,cfg,headers){
let data = await axios.get(url,{params:cfg},
{
headers: headers
})
return data;
},
async postApi(url,cfg,headers){
let fd = new FormData();
for(let key in cfg){
fd.append(key, cfg[key]);
}
let data = await axios.post(url,fd,
{
headers: headers
})
return data;
},
async putApi(url,cfg,headers){
// import qs from 'qs';
// let data = await axios.put(url,qs.stringify(cfg),{
// headers: {
// 'Content-Type':'application/x-www-form-urlencoded',
// }
// })
// return data;
},
async requestApi(cfg,headers,file){
let fd = new FormData();
fd.append('param', JSON.stringify(cfg));
if(file){
// 上傳證明
if(file.length){
for(let i=0,len=file.length;i<len;i++){
fd.append('files', file[i]);
}
}else {
// 單個上傳
for(let key in file){
fd.append(key, file[key]);
}
}
}
let data = await axios.post('/batch',fd,
{
headers: headers
})
return data;
}
}
export default Unit;
setupProxy.js:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
app.use(
// 設(shè)置路徑
'/home', createProxyMiddleware({
target: 'https://home-api.pinduoduo.com',
changeOrigin: true,
})
);
};
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談webpack+react多頁面開發(fā)終極架構(gòu)
這篇文章主要介紹了淺談webpack+react多頁面開發(fā)終極架構(gòu),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
如何使用 React Router v6 在 React 中
面包屑在網(wǎng)頁開發(fā)中的角色不可忽視,它們?yōu)橛脩籼峁┝艘环N跟蹤其在網(wǎng)頁中當(dāng)前位置的方法,并有助于網(wǎng)頁導(dǎo)航,本文介紹了如何使用react-router v6和bootstrap在react中實現(xiàn)面包屑,感興趣的朋友一起看看吧2024-09-09
react-router?重新加回跳轉(zhuǎn)攔截功能詳解
這篇文章主要為大家介紹了react-router?重新加回跳轉(zhuǎn)攔截功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
React中實現(xiàn)編輯框自動獲取焦點與失焦更新功能
在React應(yīng)用中,編輯框的焦點控制和數(shù)據(jù)回填是一個常見需求,本文將介紹如何使用useRef和useEffect鉤子,在組件中實現(xiàn)輸入框自動獲取焦點及失焦后更新數(shù)據(jù)的功能,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下2024-01-01
redux持久化之redux-persist結(jié)合immutable使用問題
這篇文章主要為大家介紹了redux持久化之redux-persist結(jié)合immutable使用問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
詳解React如何使用??useReducer???高階鉤子來管理狀態(tài)
useReducer是React中的一個鉤子,用于替代?useState來管理復(fù)雜的狀態(tài)邏輯,本文將詳細介紹如何在React中使用?useReducer高階鉤子來管理狀態(tài),感興趣的可以了解下2025-02-02

