Cet article présente principalement la tentative d'utiliser React pour écrire vous-même un composant de pagination (résumé). Maintenant, je le partage avec vous et le donne comme référence.
Cet article présente la tentative d'écriture d'un composant de pagination (résumé) en utilisant React par vous-même et le partage avec tout le monde. Les détails sont les suivants :
Effet de pagination.
Aperçu en ligne
adresse github
Capture d'écran de l'effet (le style peut être modifié par vous-même) :

Construire un projet
1 | create-react-app react-paging-component
|
Copier après la connexion
Composant de pagination
1. Sous-composant
Créer un fichier Pagecomponent.js<🎜. >
Code principal :
Valeur d'initialisation
1 2 3 4 5 6 7 8 9 | constructor(props) {
super(props)
this.state = {
currentPage: 1,
groupCount: 5,
startPage: 1,
totalPage:1
}
}
|
Copier après la connexion
Génération dynamique de la fonction de numéro de page
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | createPage() {
const {currentPage, groupCount, startPage,totalPage} = this.state;
let pages = []
pages.push(<li className={currentPage === 1 ? "nomore" : null} onClick={this.prePageHandeler.bind(this)}
key={0}>
上一页</li>)
if (totalPage <= 10) {
for (let i = 1; i <= totalPage; i++) {
pages.push(<li key={i} onClick={this.pageClick.bind(this, i)}
className={currentPage === i ? "activePage" : null}>{i}</li>)
}
} else {
pages.push(<li className={currentPage === 1 ? "activePage" : null} key={1}
onClick={this.pageClick.bind(this, 1)}>1</li>)
let pageLength = 0;
if (groupCount + startPage > totalPage) {
pageLength = totalPage
} else {
pageLength = groupCount + startPage;
}
if (currentPage >= groupCount) {
pages.push(<li className= "" key={-1}>···</li>)
}
for (let i = startPage; i < pageLength; i++) {
if (i <= totalPage - 1 && i > 1) {
pages.push(<li className={currentPage === i ? "activePage" : null} key={i}
onClick={this.pageClick.bind(this, i)}>{i}</li>)
}
}
if (totalPage - startPage >= groupCount + 1) {
pages.push(<li className= "" key={-2}>···</li>)
}
pages.push(<li className={currentPage === totalPage ? "activePage" : null} key={totalPage}
onClick={this.pageClick.bind(this, totalPage)}>{totalPage}</li>)
}
pages.push(<li className={currentPage === totalPage ? "nomore" : null}
onClick={this.nextPageHandeler.bind(this)}
key={totalPage + 1}>下一页</li>)
return pages;
}
|
Copier après la connexion
Fonction de clic sur le numéro de page :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | pageClick(currentPage) {
const {groupCount} = this.state
const getCurrentPage = this.props.pageCallbackFn;
if (currentPage >= groupCount) {
this.setState({
startPage: currentPage - 2,
})
}
if (currentPage < groupCount) {
this.setState({
startPage: 1,
})
}
if (currentPage === 1) {
this.setState({
startPage: 1,
})
}
this.setState({
currentPage
})
getCurrentPage(currentPage)
}
|
Copier après la connexion
Page précédente et événements de clic Xiaye
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | prePageHandeler() {
let {currentPage} = this.state
if (--currentPage === 0) {
return false
}
this.pageClick(currentPage)
}
nextPageHandeler() {
let {currentPage,totalPage} = this.state
if (++currentPage > totalPage) {
return false
}
this.pageClick(currentPage)
}
|
Copier après la connexion
Le composant est rendu vers le DOM
1 2 3 4 5 6 7 8 | render() {
const pageList = this.createPage();
return (
<ul className= "page-container" >
{pageList}
</ul>
)
}
|
Copier après la connexion
2. Composant Parent
Créer le fichier Pagecontainer.js
Le code complet du composant parent
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import React, {Component} from 'react'
import Pagecomponent from '../components/Pagecomponent'
import data from '../mock/tsconfig.json'
class Pagecontainer extends Component {
constructor() {
super()
this.state = {
dataList:[],
pageConfig: {
totalPage: data.length
}
}
this.getCurrentPage = this.getCurrentPage.bind(this)
}
getCurrentPage(currentPage) {
this.setState({
dataList:data[currentPage-1].name
})
}
render() {
return (
<p>
<p>
{this.state.dataList}
</p>
<Pagecomponent pageConfig={this.state.pageConfig}
pageCallbackFn={this.getCurrentPage}/>
</p>
)
}
}
export default Pagecontainer
|
Copier après la connexion
Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir.
Articles associés :
Comment utiliser les filtres de la série Vue2.0 ?
Comment revenir en haut via la méthode tween dans le projet vue
Comment utiliser vue pour déterminer que le contenu d'entrée est tout des espaces ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!