![](/img/trans.png)
[英]custom hook for storing react hook refs to deal with stale closure problem
[英]Stale closure problem react native AppState
我有一個 react native 組件,我想檢查范圍狀態中的特定值是否為“true”,然后做一些事情,但它總是在回調函數中讀取舊狀態。
const [scope, seScope] = useState({
isInScope: false,
loading: true,
isGranted: false,
})
const stateHandler = useCallback((state) => {
if (state === 'active') {
// it's always false not matter
if (!scope.isGranted) {
makeLocationPermission()
}
}
}, [scope])
console.log(scope.isGranted)
// in here isGranted is true
useEffect(() => {
makeIsGrantedTrue()
AppState.addEventListener('change', stateHandler)
return () => {
AppState.removeEventListener('change', stateHandler)
}
}, [])
好的,我只是通過將“范圍”放在使用效果依賴性上來解決這個問題。 不知道為什么?! 它必須依賴於 useCallback 。
useEffect(() => {
makeIsGrantedTrue()
AppState.addEventListener('change', stateHandler)
return () => {
AppState.removeEventListener('change', stateHandler)
}
}, [scope])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.