React & Material-UI 分页 - 将 Material-UI 的组件连接到 React-Router

Posted

技术标签:

【中文标题】React & Material-UI 分页 - 将 Material-UI 的组件连接到 React-Router【英文标题】:React & Material-UI Pagination - Hooking up Material-UI's component to React-Router 【发布时间】:2020-11-18 07:37:38 【问题描述】:

我有一个组件可以处理从 API 中提取的房地产列表的分页。它正在成功显示适当数量的列表,并正在处理创建适当数量的链接。

看起来像这样:

const Paginations = ( listingsPerPage, totalListings, paginate ) => 
    const pageNumbers = [];

    for(let i = 1; i <= Math.ceil(totalListings / listingsPerPage); i++) 
        pageNumbers.push(i);
    

    return (
         <ul>
           pageNumbers.map(number => (
               <li key=number>
                   <a onClick=() => paginate(number) href="#">
                       number
                   </a>
               </li>
           ))
       </ul>
    );


export default Paginations;

我想用 Material-UI 的 Pagination 组件替换基本的 ul。我还想将它连接到 React-Router 并让它处理到适当页面的路由,即组件的 URL 是 /search/,如果您单击 3,它将带您到 /search?page=3

Material-UI 给出的示例如下所示:

import React from 'react';
import  MemoryRouter, Route  from 'react-router';
import  Link  from 'react-router-dom';
import Pagination from '@material-ui/lab/Pagination';
import PaginationItem from '@material-ui/lab/PaginationItem';

export default function PaginationLink() 
  return (
    <MemoryRouter initialEntries=['/inbox'] initialIndex=0>
      <Route>
        ( location ) => 
          const query = new URLSearchParams(location.search);
          const page = parseInt(query.get('page') || '1', 10);
          return (
            <Pagination
              page=page
              count=10
              renderItem=(item) => (
                <PaginationItem
                  component=Link
                  to=`/inbox$item.page === 1 ? '' : `?page=$item.page``
                  ...item
                />
              )
            />
          );
        
      </Route>
    </MemoryRouter>
  );

如何将示例与路由器合并到我的分页组件中?

【问题讨论】:

【参考方案1】:

https://codesandbox.io/s/material-demo-forked-uhczc?file=/demo.js

请找到上面的链接,这将帮助您创建素材ui路由器分页。

尝试更改网址例如:https://....../5(分页将设置为 5)

【讨论】:

请对您的回答进行详细解释,以便其他用户更好地理解。此外,最好将相关代码粘贴到您的答案中,以防您提供的链接关闭。

以上是关于React & Material-UI 分页 - 将 Material-UI 的组件连接到 React-Router的主要内容,如果未能解决你的问题,请参考以下文章

Material-ui 从 react-router 添加 Link 组件

Material-UI:滚动到元素时触发转换

如何在 Material-UI 菜单中使用自定义功能组件

使用 React 和 Material-UI 的开源项目?

在 Material-UI 中使用 React 的 'ref' 属性

React + Material-UI |如何创建水平滚动卡片?