慕碼人2483693
2022-08-18 15:59:10
const _id = match.params.id;const response = await api.get("/roleidindex", { params: { _id }})console.log (response.data); //correct objectsetRole(response.data);console.log (role); //{}在我的代碼中,我有這段文本,并且由于注釋顯示請(qǐng)求的響應(yīng)很好,但是當(dāng)我將狀態(tài)設(shè)置為值時(shí),狀態(tài)與其初始狀態(tài)相同。順便說一句,這一切都在useEffect方法中。
1 回答

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
調(diào)用狀態(tài)更改時(shí),組件不會(huì)立即更新 - 而是對(duì)更改進(jìn)行批處理,以便一次完成所有排隊(duì)的更改,然后重新呈現(xiàn)。
使用鉤子,代碼中的變量無論如何都不會(huì)收到更新的數(shù)據(jù),因?yàn)楸仨氃俅握{(diào)用整個(gè)組件才能使更新的值存在 - 只有在下次調(diào)用組件時(shí),才會(huì)為組件分配從 中獲取的更新值。roleroleuseState
如果要記錄數(shù)據(jù),假設(shè)它開始時(shí)為空,則應(yīng)在主組件正文中執(zhí)行此操作:
const [role, setRole] = useState(null);
if (role) {
console.log('Got data', role);
}
添加回答
舉報(bào)
0/150
提交
取消