在按钮单击时通过页面刷新反应显示数据
React Show data with page refresh on Button click
我有对象数组作为数据。数据显示在初始页面加载时。当使用 clearBooks() 函数调用 Clear Book 按钮时,我将数组设置为空(不显示数据)并将按钮值更改为 Show Books
我想要实现的是,当单击 Show Books
按钮时,我想像以前一样显示所有对象。我虽然在单击 Show Books
时使用 window.location.reload();
刷新页面(如果有更好的解决方案,请打开以使用它们)。我需要帮助才能在代码中实现此功能
main.js
const clearBooks = () => {
if (buttonTitle === "Clear Books") {
setButtonTitle("Show Books");
}
setBooksData([]);
};
return (
<section className="booklist">
{booksData.map((book, index) => {
return (
<Book key={index} {...book}>
</Book>
);
})}
<div>
<button type="button" onClick={clearBooks}>
{buttonTitle}
</button>
</div>
</section>
);
数据
export const books = [
{
id: 1,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
{
id: 2,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
您可以将最初获取的数据存储到一个单独的状态中,并通过在 Show Books
单击时将其值设置为等于该状态来重置 booksData
数组:
const [originalBooksData, setOriginalBooksData] = useState([]);
const [booksData, setBooksData] = useState([]);
const fetchBooks = async () => {
...
// After booksData have been fetched set originalBooksData equal to it
setOriginalBooksData(booksData)
}
const clearBooks = () => {
if (buttonTitle === 'Clear Books') {
// Clear the books
setButtonTitle('Show Books');
setBooksData([]);
} else {
// Reset the books
setBooksData(originalBooksData);
}
};
...
当然,加载数据时,您需要将originalBooksData
设置为booksData
。
这样可以避免在清除数据时需要刷新页面。
您可以使用 useState
钩子来实现。
const books = [
{
id: 1,
img: "https://m.media/_QL65_.jpg",
author: "A",
title: "B",
},
{
id: 2,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
]
const [bookList, setBookList] = useState(books);
const clearBooks = () => {
setBookList("");
}
const showBooks = () => {
setBookList(books);
}
当您需要清除图书列表时,将 bookList 设置为空;当您想要显示图书列表时,将 bookList 设置为 books
对象。
我有对象数组作为数据。数据显示在初始页面加载时。当使用 clearBooks() 函数调用 Clear Book 按钮时,我将数组设置为空(不显示数据)并将按钮值更改为 Show Books
我想要实现的是,当单击 Show Books
按钮时,我想像以前一样显示所有对象。我虽然在单击 Show Books
时使用 window.location.reload();
刷新页面(如果有更好的解决方案,请打开以使用它们)。我需要帮助才能在代码中实现此功能
main.js
const clearBooks = () => {
if (buttonTitle === "Clear Books") {
setButtonTitle("Show Books");
}
setBooksData([]);
};
return (
<section className="booklist">
{booksData.map((book, index) => {
return (
<Book key={index} {...book}>
</Book>
);
})}
<div>
<button type="button" onClick={clearBooks}>
{buttonTitle}
</button>
</div>
</section>
);
数据
export const books = [
{
id: 1,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
{
id: 2,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
您可以将最初获取的数据存储到一个单独的状态中,并通过在 Show Books
单击时将其值设置为等于该状态来重置 booksData
数组:
const [originalBooksData, setOriginalBooksData] = useState([]);
const [booksData, setBooksData] = useState([]);
const fetchBooks = async () => {
...
// After booksData have been fetched set originalBooksData equal to it
setOriginalBooksData(booksData)
}
const clearBooks = () => {
if (buttonTitle === 'Clear Books') {
// Clear the books
setButtonTitle('Show Books');
setBooksData([]);
} else {
// Reset the books
setBooksData(originalBooksData);
}
};
...
当然,加载数据时,您需要将originalBooksData
设置为booksData
。
这样可以避免在清除数据时需要刷新页面。
您可以使用 useState
钩子来实现。
const books = [
{
id: 1,
img: "https://m.media/_QL65_.jpg",
author: "A",
title: "B",
},
{
id: 2,
img: "https://m.media/_QL65_.jpg",
author: " A ",
title: "B",
},
]
const [bookList, setBookList] = useState(books);
const clearBooks = () => {
setBookList("");
}
const showBooks = () => {
setBookList(books);
}
当您需要清除图书列表时,将 bookList 设置为空;当您想要显示图书列表时,将 bookList 设置为 books
对象。