ReactJS 分页 React Hooks

尤西·奥伦

大家好,我有反应和节点的凝乳,我想添加分页,现在显示所有卡不间断

现在这个代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from 'react';
import { Grid, CircularProgress } from '@material-ui/core';
import { useSelector } from 'react-redux';

import Post from './Post/Post';
import useStyles from './styles';

const Posts = ({ setCurrentId }) => {
  const posts = useSelector((state) => state.posts);
  const classes = useStyles();

  return (
    !posts.length ? <CircularProgress /> : (
      <Grid className={classes.container} container alignItems="stretch" spacing={3}>
        {posts.map((post) => (
          <Grid key={post._id} item xs={12} sm={6} md={6}>
            <Post post={post} setCurrentId={setCurrentId} />
          </Grid>
        ))}
      </Grid>
    )
  );
};

export default Posts;

这段代码我尝试

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from 'react';
import { Grid, CircularProgress } from '@material-ui/core';
import { useSelector } from 'react-redux';

import Post from './Post/Post';
import useStyles from './styles';

const Posts = ({ setCurrentId }) => {
  const posts = useSelector((state) => state.posts);
  const classes = useStyles();
  const [pageNumber, setPageNumber] = useState(0);

  const usersPerPage = 10;
  const pagesVisited = pageNumber * usersPerPage;

  const displayUsers = users

  return (
    !posts.length ? <CircularProgress /> : (
      <Grid className={classes.container} container alignItems="stretch" spacing={3}>
    .slice(pagesVisited, pagesVisited + usersPerPage)
    post.map((user) => {
          <Grid key={post._id} item xs={12} sm={6} md={6}>
            <Post post={post} setCurrentId={setCurrentId} />
          </Grid>
        }
      </Grid>
    )
  );
};

export default Posts;
本教程我尝试学习 https://www.youtube.com/watch?v=HANSMtDy508 我很乐意提供帮助或信息来源来帮助我

阿里沙兹尔

请参阅此简单的 javascript 示例以进行分页

var ary = [0,1,2,3,4,5,6,7,10,11,12];
var page = 3
var limit = 3
var startIndex = (page-1)*limit
console.log(ary.slice(startIndex,limit))
//Your pagecount will be 
 var Numberofpage = Math.floor((ary.length+limit -1)/limit)
 console.log(Numberofpage)

在你的情况下

const Posts = ({ setCurrentId }) => {
  const posts = useSelector((state) => state.posts);
  const classes = useStyles();
   const [pageNumber, setPageNumber] = useState(1);
  const [buttonnext, setbuttonnext] = useState(false);
  const [prebutton, setprebutton] = useState(true);
  
   const PostsPerPage = 10;
    const limit=8;
  const [startIndex,setstartIndex] = useState();
  const [endIndex,setendIndex] = useState();

  useEffect(()=>{
    setstartIndex((pageNumber-1)*limit)
    setendIndex(pageNumber*limit)
    console.log(startIndex)
    console.log(endIndex)

  },[posts,pageNumber])

  const Next = ()=>{

    if(pageNumber === (Math.floor((posts.length+limit -1)/limit))){
     setbuttonnext(true)
     
    }else{
      setPageNumber(pageNumber+1)
      setprebutton(false)
    }
  }
  const Previous = () =>{
  
    if(pageNumber == 1){
      setprebutton(true)
    }else{
      setPageNumber(pageNumber-1)
      setbuttonnext(false)
    }
  }
  


  return(
     !posts.length ? <CircularProgress /> : <>
     <Grid className={classes.container} container alignItems="stretch" spacing={3}>
                    {posts.slice(startIndex,endIndex).map((post) => {
                        return(  <Grid key={post._id} item xs={12} sm={6} md={6}>
                              <Post post={post} setCurrentId={setCurrentId} />
                          </Grid>)
                    })}

                    <><button disabled={prebutton}  onClick={Previous}>Previous</button>
                    <p>{ pageNumber}</p>
                    <button disabled={buttonnext} onClick={Next}>Next</button>
                    </>
              </Grid></>
  )
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章