【发布时间】:2021-04-02 09:25:19
【问题描述】:
我在Home.js 文件中的setItem 为:
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 值已更新但它没有重新渲染。
那么我该如何重新渲染呢?
【问题讨论】:
-
-> setValue(value),你没有使用setter。
-
什么是 val(value)?我认为应该是 setVal(value)。
-
@Konstantin 这是一种类型...刚刚修复它...它仍然不起作用
-
@ZenoDallaValle 是的,这是一个错字。但。即使修复它仍然不会重新渲染
-
我相信你可以尝试使用
await AsyncStorage.setItem。您应该检查您的本地存储,看看您的值是否已更新。