useEffectuseState第一次渲染時只更新一次,但如果我重繪 頁面,我會得到一個空的資料串列。但是當我更改代碼中的某些內容時.. 在第一次重繪 時,我會在控制臺中看到 useState 所需的資料,但是每次重繪 時,我只能看到一個空陣列。
const [transaction, setTransaction] = useState([])
const [family_group, setFamily_group] = useState([])
const { id } = useParams();
useEffect(() => {
getSingleTransaction()
}
, [id])
const getSingleTransaction = async () => {
const { data } = await axios.get(`/calc/trans/${id}`)
setTransaction(data)
setFamily_group(data['family_group'])
}
console.log(transaction, "isssssss")
console.log(family_group, "igggg")
現在我將看到控制臺日志資料
但是一旦我重繪 頁面,我就會得到一個空的資料串列。
提前感謝您的建議。
uj5u.com熱心網友回復:
console.loggetSingleTransaction由于異步性質,在完成之前不會發生。
useEffect(() => {
getSingleTransaction()
console.log(transaction)
console.log(family_group)
}
, [])
如果你在里面添加日志getSingleTransaction并且如果它記錄id,data那么你的代碼就很好。
const getSingleTransaction = async () => {
console.log(id);
const { data } = await axios.get(`/calc/trans/${id}`)
console.log(data);
setTransaction(data)
setFamily_group(data['family_group'])
}
或者,將兩個控制臺日志移出,useEffect因為它會在狀態更改時記錄。
正如@AndreaCostanzo1 在評論中提到的,將 id 添加為useEffect.
uj5u.com熱心網友回復:
嘗試這個:
const [transaction, setTransaction] = useState([])
const [family_group, setFamily_group] = useState([])
const { id } = useParams();
useEffect(() => {
const getSingleTransaction = async (objId) => {
const { data } = await axios.get(`/calc/trans/${objId}`)
setTransaction(data)
setFamily_group(data['family_group'])
}
if (id) {
getSingleTransaction(id)
}
, [id])
console.log(transaction, "isssssss")
console.log(family_group, "igggg")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/367832.html
上一篇:Django后端提供反應前端影像
