ITPub博客

首页 > IT职业 > IT图书 > Bootstrap Paginator分页插件与ReactJS前端框架

Bootstrap Paginator分页插件与ReactJS前端框架

IT图书 作者:oldmonst 时间:2021-09-09 09:01:41 0 删除 编辑

网上有许多分页框架结合ReactJS的例子,这里我也贡献出bootstrap-Paginator结合ReactJS框架不得不说的那些事儿。
第一步创建一空白js文件,把我下面的代码复制到里面,接下来会用到这么代码

var Page = {
    dataSize :15,//每页显示的数量
    /**
     * 计算页数
     * @param pageNumber 当前选择页数
     * @param dataArray  后台获取的全部数据
     * @returns {Array}
     */
    getPageData:function(pageNumber,dataArray){
        if(InputText.nonEmpty(dataArray)){
            var dataSize = this.dataSize ;
            var maxLength = dataSize * pageNumber -1;
            var minLength = dataSize * pageNumber - dataSize;
            var pageData = [];
            for(var i = minLength; i

第二步就是页面html显示了,循环表格我就不写

var DataList = React.createClass({
    getInitialState: function() {
        return {
            //serviceData:this.props.data,//解决坑的代码
            serviceData:null,//从后台获取的数据或是自定义数据。
            pageNumber:1 //默认选择第一页
        };
    },
      //页面加载完成后,自会执行这个函数
     componentDidMount:function(){
        var _this = this;
        //如果你列表有条件查询你要这么写,我这里给的是例子
/*$("#btnSubmit").click(function(){
          var data = $("#each").serialize();
            //selectAchievementDataCondition这个函数的背后实现其实是ajax提交啦
          Service.selectAchievementDataCondition(data,function(result){
              _this.setState({
                  achievementView:result.message
              });
                //这里是重点
              _this.handleSetPage(result.message);
          });
      });*/
        _this.handleSetPage(_this.state.serviceData);
    },
     render:function(){
        var _this = this;
        //获取选中的页码
        var pageNumber = _this.state.pageNumber
        //选中页码要显示的数据
        var pageData =         Page.getPageData(pageNumber,_this.state.serviceData);
     //然后就是循环新获取pageData的数据,这需要有reactjs一定的基础   
       return(
                
        )
    },
 handleSetPage:function(dataArray) {
        var _this = this;
        var totalPages = 1;
        _this.setState({pageNumber: 1});
        if (InputText.nonEmpty(dataArray)) {
            totalPages = Math.ceil(dataArray.length / Page.dataSize)
            if (totalPages > 1) {
                $("#nextLast").hide();
            }
        }
        $('.paginations').bootstrapPaginator({
            bootstrapMajorVersion: 3,
            currentPage: 1,
            numberOfPages: 5,
            totalPages: totalPages,
            onPageClicked: function (event, originalEvent, type, page) {
                if (page == 1) {
                    $("#firstPrev").show();
                    $("#nextLast").hide();
                } else {
                    $("#firstPrev").hide();
                    $("#nextLast").hide();
                }
                if (page == totalPages) {
                    $("#nextLast").show();
                }
                _this.setState({pageNumber: page});
            }
        });
    }
});

第三步就是调用这个DataList组件了

ReactDOM.render(
            ,
            document.getElementById("dataLIst")
        )

解决获取后台数据坑:
在第二步有段代码,需要获取后台数据,我建议大家 这样写,虽然也可以写在reactjs自带的componentDidMount函数里

$(function(){
    Service.selectAchievementData("1",function(result){
        var dataArray = result.message
        ReactDOM.render(
            ,
            document.getElementById("dataLIst")
        )
    });
});

到此这遍文章写完了,我现在把我使用的文件放出来,大家在使用过程中发现哪些问题请及时提出,我好修改这边文章内容。
https://pan.baidu.com/s/1dFFycFZ

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4758/viewspace-2798744/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-25

  • 博文量
    67
  • 访问量
    494