![](/img/trans.png)
[英]Update state with useEffect from another page using React hooks
[英]React hooks: Not getting the state update when using useEffect
混合useState
和useEffect
掛鈎時出現問題。 我似乎無法在onReady()
引用新的query
狀態。
function Foo() {
const [ query, setQuery ] = React.useState('initial query');
React.useEffect(() => {
myLibClient.onReady(onReady)
}, []);
function onReady() {
const newQuery = myLibClient.createQuery({ options });
setQuery(newQuery);
console.log(query); // initial query :(
}
return null;
}
誰能看到我在做什么錯或解釋為什么這行不通?
這里的問題是,像this.setState
在反應基於類的元件, setQuery
功能也設置狀態異步。
因此,如果您嘗試在設置狀態后立即訪問該值,則將獲得較舊的值。
您可以在此處驗證此行為。 https://codesandbox.io/s/2w4mp4x3ry 。 (請參閱名為Counter.js的文件)您將看到counter的前后值是相同的。
如果要訪問更新的值,則可以在下一個渲染周期中訪問它。 我創建了另一個示例,您可以看到正在呈現新的查詢值。
https://codesandbox.io/s/8l7mqkx8wl (請參閱名為Counter.js的文件)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.