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

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

如何在 React 自定義 Hook 中正確調用 useState?

如何在 React 自定義 Hook 中正確調用 useState?

Helenr 2021-05-31 13:51:27
我正在嘗試創建一個自定義 Hook,它允許我在按下按鈕時傳遞一個值并減去 1。我目前收到的錯誤是React Hook "useLastPage" 在函數 "handleLastPage" 中調用,該函數既不是 React 函數組件,也不是自定義 React Hook 函數在以下代碼中:function usePrevPage (page) {    const [lastPage, useLastPage] = useState(page)    useEffect(() => {        function handleLastPage(page) {            useLastPage(page - 1)        }        handleLastPage()    })    return lastPage}我的代碼與 React Doc 的自定義鉤子示例密切相關,所以我不確定如何useLastPage在我的自定義鉤子中調用。以下是React 文檔中的示例:function useFriendStatus(friendID) {  const [isOnline, setIsOnline] = useState(null);  useEffect(() => {    function handleStatusChange(status) {      setIsOnline(status.isOnline);    }    ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);    return () => {      ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);    };  });  return isOnline;}
查看完整描述

3 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

useEffect類似于componentDidMount和componentDidUpdate。當它運行Component正mounted/updated。要減少lastPage狀態值,您可以直接在 useState 回調中直接調用它的 setter。另外我建議將 setter 前綴更改set為use


function usePrevPage (page) {

    const [lastPage, setLastPage] = useState(page);

    useEffect(() => {

          setLastPage(page-1);

    });

    return lastPage;

}

如果要更改按鈕單擊時的值,則需要在外部編寫處理程序useEffect并將其設置為按鈕的onClick道具。


查看完整回答
反對 回復 2021-06-03
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

我認為您的主要問題是您正在調用 set 函數useLastPage-React linter 查找以單詞開頭的函數use并嘗試將它們“lint”為鉤子。在這種情況下useLastPage不是一個鉤子,它是從useState. 我懷疑如果你調用它setLastPage會為你清除錯誤消息。


查看完整回答
反對 回復 2021-06-03
  • 3 回答
  • 0 關注
  • 334 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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