我试图将页码添加到url中(在useEffect函数的末尾),但现在导航到另一个页面将不再有效,每次我单击第2页时,只会导航回第1页,有人能看到我在这里做错了什么吗?我添加了我的列表组件、分页组件和应用程序。js。
书单。js
import React, { useState, useEffect } from "react";
import queryString from "query-string";
import Books from "./Books";
import Pagination from "./Pagination";
import axios from "axios";
import { useHistory, useLocation } from "react-router-dom";
import { Container } from "react-bootstrap";
const BooksList = () => {
const location = useLocation();
const history = useHistory();
const path = window.location.pathname;
const initialQueryString = queryString.parse(location.search);
const initialPageNumber = Number(initialQueryString.page) || 1;
const [books, setBooks] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const [currentPage, setCurrentPage] = useState(initialPageNumber);
const [booksPerPage, setBooksPerPage] = useState(5);
useEffect(() => {
const fetchBooks = async () => {
try {
setError(false);
setLoading(true);
const res = await axios.post("http://nyx.vima.ekt.gr:3000/api/books");
setBooks(res.data.books);
setLoading(false);
} catch (err) {
console.log(err);
setError(true);
setLoading(false);
setBooks([]);
}
};
fetchBooks();
history.push(`${path}?page=${currentPage}`);
}, [currentPage, history, path]);
const indexOfLastBook = currentPage * booksPerPage;
const indexOfFirstBook = indexOfLastBook - booksPerPage;
const currentBooks = books.slice(indexOfFirstBook, indexOfLastBook);
const paginate = pageNumber => setCurrentPage(pageNumber);
if (error) return <div>Error message</div>;
return (
<Container>
<Books books={currentBooks} loading={loading} />
<Pagination
booksPerPage={booksPerPage}
booksAmount={books.length}
paginate={paginate}
/>
</Container>
);
};
export default BooksList;
Pagination.js
import React from "react";
const Pagination = ({ booksPerPage, booksAmount, paginate }) => {
const pageNumbers = [];
for (let i = 1; i < Math.ceil(booksAmount / booksPerPage); i++) {
pageNumbers.push(i);
}
return (
<div className="container mt-5">
<nav>
<ul className="pagination">
{pageNumbers.map(number => {
return (
<li className="page-item" key={number}>
<a
href="!#"
onClick={() => paginate(number)}
className="page-link"
>
{number}
</a>
</li>
);
})}
</ul>
</nav>
</div>
);
};
export default Pagination;
应用程序。js
import "./App.css";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import BooksList from "./components/BooksList";
const App = () => {
return (
<Router>
<Switch>
<Route exact path="/" component={BooksList} />
<BooksList />
</Switch>
</Router>
);
};
export default App;
在分页中的onClick方法中添加此行。js:
e.preventDefault();
以下是代码:
return (
<div className="container mt-5">
<nav>
<ul className="pagination">
{pageNumbers.map((number) => {
return (
<li className="page-item" key={number}>
<a
href="!#"
onClick={(e) => {
paginate(number);
e.preventDefault();
}}
className="page-link"
>
{number}
</a>
</li>
);
})}
</ul>
</nav>
</div>
);
};
基本上,每次单击按钮时,页面都会重新渲染/刷新,所有数据都会丢失。所以你的页面会回到默认状态。
问题内容: 我花了一点时间试图找出一种将标头添加到的方法,但未成功。 这是我到目前为止所得到的: 在似乎是处理的配置对象的项目。由于找不到任何方法,因此决定使用方法,并将标头视图添加到第一个位置以用作标头。 Aaand这就是事情变得更糟的地方: 在尝试创建的不同时刻调用了几次之后(还尝试在设置所有内容(甚至是适配器的数据)后添加视图),我意识到我不知道这是否是正确的方法(并且它看起来不是)。 PS
本文向大家介绍javascritp添加url参数将参数加入到url中,包括了javascritp添加url参数将参数加入到url中的使用技巧和注意事项,需要的朋友参考一下 将对象参数加入到url中,如果原来url中有则覆盖 js代码
问题内容: 我在将新的简单XWPFTable添加到XWPFHeader(或Footer)时遇到了严重的麻烦。不幸的是,似乎只有一个人遇到相同的问题(https://bz.apache.org/bugzilla/show_bug.cgi?id=57366#c0)。 有谁有办法实现这一目标? 任何帮助将不胜感激! 亲切的问候… 〜丹尼尔 问题答案: 这可以使用公共XWPFTable insertNew
问题内容: 我有一个ListView活动,该活动需要项目列表的页脚,以便您可以单击它,这会将更多项目加载到列表中。该列表由我的SimpleAdapter支持,该SimpleAdapter由字符串映射支持,并且在设置适配器之前,我这样做是为了添加页脚: 但是我在调试器中得到了这个异常 java.lang.NullPointerException android.widget.ListView.c
问题内容: 如何使用itext从html源向pdf添加标头? 当前,我们扩展了PdfPageEventHelper并覆盖了这些方法。工作正常,但是当我进入2个以上页面时,它将引发RuntimeWorkerException。 问题答案: 通常, 禁止 在事件中添加内容。这是 禁止 添加内容到的对象。您应该使用而 不是 文档在方法中添加页眉和页脚。此外:通过一遍又一遍地解析HTML,您正在浪费大量C
我想允许用户重置他们的密码。为了做到这一点,我首先检查他们的电子邮件是否存在于数据库中,如果存在,我向他们发送一封电子邮件,其中包含指向重置密码页面的链接。为了确保链接是安全的,后者是用jwt令牌制作的,该令牌仅对15mn有效。 但是,无法访问该url,因为有“.”在jwt中: < code > http://www . myapp . com/reset-password/eyjhbgcioin