페이지 구성 요소(소결)를 react 로 직접 쓰 려 고 시도 합 니 다.
페 이 징 효과
온라인 미리 보기
github 주소
효과 캡 처(스타일 은 스스로 수정 가능):
구축 프로젝트
create-react-app react-paging-component
페이지 구성 요소1.하위 구성 요소
Pagecomponent.js 파일 생 성
핵심 코드:
초기 화 값
constructor(props) {
super(props)
this.state = {
currentPage: 1, //
groupCount: 5, // , 7 ,
startPage: 1, //
totalPage:1 //
}
}
동적 생 성 페이지 함수
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) {
/* 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 {
/* 10 , */
//
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;
}
페이지 클릭 함수:
//
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)
}
이전 페이지 와 여름 밤 클릭 이벤트
//
prePageHandeler() {
let {currentPage} = this.state
if (--currentPage === 0) {
return false
}
this.pageClick(currentPage)
}
//
nextPageHandeler() {
let {currentPage,totalPage} = this.state
// const {totalPage} = this.props.pageConfig;
if (++currentPage > totalPage) {
return false
}
this.pageClick(currentPage)
}
구성 요소 가 DOM 에 렌 더 링 됨
render() {
const pageList = this.createPage();
return (
<ul className="page-container">
{pageList}
</ul>
)
}
2.부모 구성 요소Pagecontainer.js 파일 생 성
부모 구성 요소 전체 코드
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 (
<div>
<div>
{this.state.dataList}
</div>
<Pagecomponent pageConfig={this.state.pageConfig}
pageCallbackFn={this.getCurrentPage}/>
</div>
)
}
}
export default Pagecontainer
이로써 한 페이지 구성 요소 가 개발 되 었 습 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 지지 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 에서 사이트 아이콘 표시 설정전단 개발 환경: react:^16.4.1 webpack:^4.16.0 웹 팩 에 favicon. ico 설정 추가: nginx 는 ico 에 대한 지원 을 추가 합 니 다:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.