亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 React 中有條件地顯示按鈕

在 React 中有條件地顯示按鈕

幕布斯7119047 2023-03-03 13:09:54
我有一個組件可以對博客文章執行分頁功能。每次單擊“加載更多”按鈕時,頁面底部都會加載另外五個帖子。不過,我現在對如何解決問題一無所知。問題:單擊“加載更多”按鈕并且所有可用帖子都可見后,“加載更多”按鈕應該消失。代碼:const Posts = ({ state }) => {  const [categories, setCategories] = useState([]);  const [categoryId, setCategoryId] = useState();  const [page, setPage] = useState(1);  const [posts, setPosts] = useState([]); // Posts for each category  const [allPosts, setAllPosts] = useState([]); // All posts from all categories  // Get all of the available categories  useEffect(() => {    fetch(state.source.api + "/wp/v2/categories")      .then(response => response.json())      .then(data => {        setCategories(data);      })  }, []);  useEffect(() => {    if (categoryId) {      fetch(state.source.api + "/wp/v2/posts?categories=" + categoryId + "&per_page=5")        .then((response) => response.json())        .then((data) => {          setPosts(data);        });    }  }, [categoryId]);  // Get posts for each category  useEffect(() => {    if (!categoryId) {      return;    }    let url = state.source.api + "/wp/v2/posts?categories=" + categoryId + "&per_page=5";    if (page > 1) {      url += `&page=${page}`;    }    fetch(url)      .then((response) => response.json())      .then((data) => {        setPosts([...posts, ...data]);      });  }, [categoryId, page]);  useEffect(() => {    let url = state.source.api + "/wp/v2/posts?per_page=5";    if (page > 1) {      url += `&page=${page}`;    }    fetch(url)      .then((response) => response.json())      .then((data) => {        setAllPosts([...allPosts, ...data]);      });  }假設最多有 3 頁的帖子,一次查看 5 個 - 所以總共 15 個帖子......一旦所有 3 頁都可見,我再次點擊“加載更多”(即使沒有更多帖子可用) ,我收到一個控制臺錯誤... my api... GET /wp/v2/posts?categories=78&per_page=5&page=4 400 (Bad Request),這顯然意味著沒有要獲取的第 4 頁,因為沒有更多帖子。我認為這需要一個 if 語句,但我不確定我將如何開始編寫它。有人有任何意見嗎?
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

您應該有一個名為 totalPages 的變量,它保存頁數,然后比較 totalPages 和頁面狀態,類似這樣:

{page <= totalPages && <button onClick={() => { setPage(page + 1); }}>Load more</button>}

在這種情況下,如果 page 為 3 且 totalPages 為 4,則該按鈕將不會顯示


查看完整回答
反對 回復 2023-03-03
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

嘗試一個名為“react-paginate”的 npm 包,有了它你可以輕松實現分頁邏輯而不會弄亂代碼,這里是這個包的鏈接https://www.npmjs.com/package/react-paginate 只需閱讀文檔,您就可以弄清楚如何執行此操作,但如果您遇到任何問題,請不要猶豫,盡管問我。



查看完整回答
反對 回復 2023-03-03
  • 2 回答
  • 0 關注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號