我正在制作一個 React 自定義鉤子,它接收一個 url 作為引數,以使用 axios 檢索資料。我可以用這個檢索我需要的資料:
import axios from 'axios';
import { useEffect, useState } from 'react';
//Takes a url parameter
const useList = (url) => {
const [data, setData] = useState( [] );
//Gets data from url parameter passed in and sets the data in State.
useEffect(() => {
axios.get(url).then(data => {
setData(data.data.content);
console.log(data);
})
}, [url]);
return {data};
}
export default useList;
我想添加另一個狀態:
const [pageNumber, setPageNumber] = useState(0);
然后在同一個 useEffect 掛鉤中更新該狀態,因為我從 URL 檢索的回應具有顯示 totalPages 的分頁資料。
我將它添加到 useEffect 鉤子中,如下所示:
useEffect(() => {
axios.get(url).then(data => {
setData(data.data.content);
setPageNumber(pageNumber.data.totalPages);
})
}, [url]);
并得到錯誤:

如何在一個 useEffect 鉤子中更新多個狀態?(對 React 來說很新)
uj5u.com熱心網友回復:
pageNumber 用一個數字初始化,所以你不能做 pageNumber.data,你應該做以下事情:
useEffect(() => {
axios.get(url).then(data => {
setData(data.data.content);
setPageNumber(data.totalPages);
})
}, [url]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
根據 api 設計其 setPageNumber(data.totalPages) 或 setPageNumber(data.data.totalPages)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/321822.html
