首页 > 解决方案 > OnPress State 通过 AsyncStorage 更新屏幕不会重新渲染

问题描述

setItemHome.js文件中为:

    AsyncStorage.setItem('myValue', JSON.stringify(3))

现在在另一个名为的文件中,Ask.js我有一个正在调用它的按钮:

    const [val, setVal] = useState("1");
...
            <TouchableOpacity onPress={() => {
                AsyncStorage.getItem("myValue").then((value) => {
                    setVal(value)
                    console.log(value + ' and ' + val)
                });
            }}>

基于console.log当按下此按钮时,它会记录1 and 3似乎值未更新但如果我再次按下它会打印3 and 3,这意味着useState值已更新但未重新呈现。

那么如何重新渲染呢?

标签: react-nativeasyncstorage

解决方案


我试图复制你的例子。我在 react-native 中创建了这个沙箱。对我来说工作正常。

编辑1:

按下此按钮时,它会记录 1 和 3,这似乎值未更新

这是因为状态钩子的异步特性(参见这个问题)。这是正常的。

您没有发布您希望看到 val 变化的代码,我想问题就在那里。


推荐阅读