簡體   English   中英

陳舊的關閉問題反應原生 AppState

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM