zoukankan      html  css  js  c++  java
  • 用react分页显示数据

    去年年底,尝试着用react写个组件化的页面! demo地址

    里面有一个list页面弄了一下数据的分页展示

    展示一下主要三个组件:父组件listBox、列表组件List、按钮组件PageButton

    父组件listBox

    
    const listData = [{
        key:"001",
        idd:"001",
        title:"webstorm连接github,方便的管理仓库",
        time:"2016-12-01",
        tag:" git ",
        contents:"66666666666666!"
    }] //等等等多条数据
    
    class listBox extends Component {
    
        constructor(props){
            super(props);
            this.pageNext=this.pageNext.bind(this);
            this.setPage=this.setPage.bind(this);
            this.state = {
                indexList:[],//当前渲染的页面数据
                totalData:listData,
                current: 1, //当前页码
                pageSize:4, //每页显示的条数
                goValue:0,  //要去的条数index
                totalPage:0,//总页数
            };
    
        }
    
        componentWillMount(){
            //设置总页数
            this.setState({
                totalPage:Math.ceil( this.state.totalData.length/this.state.pageSize),
            })
            this.pageNext(this.state.goValue)
    
        }
    
        //设置内容
        setPage(num){
            this.setState({
                indexList:this.state.totalData.slice(num,num+this.state.pageSize)
            })
        }
    
    
        pageNext (num) {
            this.setPage(num)
        }
    
    
    
        render() {
    
            return (
                <div className="main">
                    <div className="top_bar">
                    </div>
                    <div className="lists">
                        <ul className="index">
                            {this.state.indexList.map(function (cont) {
                                return <List {...cont} />
                            })}
                        </ul>
    
                        <PageButton { ...this.state } pageNext={this.pageNext} />
    
                    </div>
                </div>
            );
        }
    }
    
    

    列表组件List

    
    class list extends Component {
        constructor(props) {
            super(props);
        }
    
        render() {
            const { idd,title,time,tag,contents } = this.props
    
            return (
                <li id={idd}>
                    <Link to={`/list/listmore/${idd}`} >
                        <h3>{title}</h3>
                        <div className="icon">
                            <i className="fa fa-calendar"></i>
                            <span>发表于 {time} </span>
                            <i className="fa fa-sitemap"></i>
                            <span>分类于 {tag}  </span>
                            <i className="fa fa-edit"></i>
                            <span>暂无评论</span>
                        </div>
                        <p>{contents}</p>
                        <span className="more">more</span>
                    </Link>
                </li>
            );
        }
    }
    
    

    按钮组件PageButton

    
    class pageButton extends Component {
    
        constructor(props) {
            super(props);
            this.setNext=this.setNext.bind(this);
            this.setUp=this.setUp.bind(this);
            this.state={
                num: 0,
                pagenum:this.props.current
            }
        }
    
        //下一页
        setNext(){
            if(this.state.pagenum < this.props.totalPage){
                this.setState({
                    num:this.state.num + this.props.pageSize,
                    pagenum:this.state.pagenum + 1
                },function () {
                    console.log(this.state)
                    this.props.pageNext(this.state.num)
                })
            }
        }
    
        //上一页
        setUp(){
            if(this.state.pagenum > 1){
                this.setState({
                    num:this.state.num - this.props.pageSize,
                    pagenum:this.state.pagenum - 1
                },function () {
                    console.log(this.state)
                    this.props.pageNext(this.state.num)
                })
            }
        }
    
        render() {
            return (
                <div className="change_page">
                    <span onClick={ this.setUp } >上一页</span>
                    <span>{ this.state.pagenum }页/ { this.props.totalPage }页</span>
                    <span onClick={ this.setNext }>下一页</span>
                </div>
            );
        }
    }
    
    
    

  • 相关阅读:
    启动hadoop集群的时候只能启动一个namenode,另一个报错There appears to be a gap in the edit log. We expected txid 6, but got txid 10.
    YARN的HA
    CSS3 文本效果:text-shadow、box-shadow、text-overflow、word-wrap、word-break
    CSS3 渐变(Gradients):在两个或多个指定的颜色之间显示平稳的过渡
    CSS3 背景:几个新的背景属性,提供更大背景元素控制
    CSS3 圆角:使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角"
    CSS3 边框:创建圆角边框,添加阴影框
    CSS 网页布局的集中实现方式
    CSS 计数器:通过一个变量来设置,根据规则递增变量
    CSS 表单:使用 CSS 来渲染 HTML 的表单元素
  • 原文地址:https://www.cnblogs.com/vichily/p/6432558.html
Copyright © 2011-2022 走看看