【问题标题】:useState set value cannot update immediatelyuseState 设置值不能立即更新
【发布时间】:2020-06-26 10:27:38
【问题描述】:

我想更改为一个 useState 项的值,然后将项设置为 AsyncStorage, 但是我发现useState的值还是保持之前的值,然后保存到AsyncStorage。 请帮助我该怎么办?非常感谢

下面是我的示例代码:


 const [myGetNo,setMyGetNo] = useState(0)

  useEffect(()=>{        
        console.log('useEffect ',myGetNo)
    },[myGetNo])    

 _storeData =async  () => {
        try {
             setMyGetNo(2)  
             let myTicket ={myGetNo:myGetNo}
             await AsyncStorage.setItem('myTicket',JSON.stringify(myTicket))
            }            
        } catch (err) {
         console.log('AsyncStorage SetItem Error: ',err) 
        }
     };

结果: myGetNo 的值仍然是初始值 0 ,而不是 2 ,保存在 AsyncStorage 中。

【问题讨论】:

标签: use-state


【解决方案1】:

状态myGetNo 的值仅在重新渲染后更新。所以在 trycatch 块中,AsyncStorage 使用旧的 myGetNo 值。

要解决这个问题,请像这样更新try 块:

const newNo = myGetNo + 2
setMyGetNo(newNo)  
let myTicket ={myGetNo: newNo}
await AsyncStorage.setItem('myTicket',JSON.stringify(myTicket))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2022-08-14
    • 2021-12-12
    相关资源
    最近更新 更多