【问题标题】:From static pagination to dynamic从静态分页到动态
【发布时间】:2021-10-11 08:43:22
【问题描述】:

在分页方面需要帮助。现在我的应用程序可以更改页面,但如果我想发送像/character?page=4 这样的请求,它总是会抛出我/character?page=1 this is not help,因为我使用路由器。我不知道如何解决我的问题

我的app.js

function App() {
    return (
        <>
            <Router>
                <Header />
                <Switch>
                    <Route exact path='/' component={Home} />
                    <Route exact path='/character' component={AllCharacters} />
                    <Route component={NotFound} />
                </Switch>
                <Footer />
            </Router>
        </>
    );
}

CharacterList.jsx

    // API Data
    const url = "https://rickandmortyapi.com/api/character";
    // Fetching Page
    const fetchPage = (page) => {
        // Init loading while page load
        setLoading(true);
        const query = `${url}?page=${page}`;
        fetchData(query);
        setLoading(false);
    };
    // Change pages
    const { push } = useHistory();
    const handleChanger = (event, page) => {
        fetchPage(page);
        push({
            pathname: "/character",
            search: `?page=${page}`,
        });
    };
                <Pagination
                    count={info.pages}
                    showLastButton
                    showFirstButton
                    onChange={handleChanger}
                />

【问题讨论】:

  • “分页”的代码是什么,您是否检查过 onChange 是否正常工作并为页面设置正确的值?
  • 分页是 Material-ui 组件。是的,我检查了 onChange,它工作正常
  • 看看这是否适合你:stackoverflow.com/a/35604855/16441330
  • 它没有解决

标签: reactjs pagination fetch router


【解决方案1】:

动态分页:App.js

function App() {
    return (
        <>
            <Router>
                <Header />
                <Switch>
                    <Route exact path='/' component={Home} />
                    <Route exact path='/character/page=:page' component={DynamicPagination} />
                    <Route component={NotFound} />
                </Switch>
                <Footer />
            </Router>
        </>
    );
}

动态分页演示:DynamicPaginaton.js

export default function DynamicPagination() {
      const history = useHistory();
      const [page, setPage] = React.useState(0);
      const [pageCount, setPagcount] = useState(10);
      const handlePageChange = (event, value) => {
        history.push(`/character/page=${value}`)
        setPage(value);
      };
    
      return (
        <div >
          <Typography>page:{page}</Typography>
          <Pagination
            count={pageCount}
            page={page}
            onChange={handlePageChange}
            style={{ marginTop: 20 }}
          />
        </div>
      );
    }

【讨论】:

  • 对于我的应用程序,history.push(`/character?page=${value}`); 和没有 useHistory 之间没有区别。仍然没有像我想要的那样工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多