Javascript 反应本机:AsyncStorage.getItem不工作。我已经从react本地社区安装了AsyncStorage
我有一个带有按钮的屏幕,可以选择游戏的玩家数量。单击这些按钮中的任何一个都会调用函数,将适当的数字传递到函数中,将该数字存储在异步存储中,然后导航到下一个屏幕。见下面的代码:Javascript 反应本机:AsyncStorage.getItem不工作。我已经从react本地社区安装了AsyncStorage,javascript,react-native,asyncstorage,Javascript,React Native,Asyncstorage,我有一个带有按钮的屏幕,可以选择游戏的玩家数量。单击这些按钮中的任何一个都会调用函数,将适当的数字传递到函数中,将该数字存储在异步存储中,然后导航到下一个屏幕。见下面的代码: //按钮示例: 有多少人? 这个.startRound(3)} label=“3” > 这个.startRound(4)} label=“4” > //职能: startRound=(玩家数量)=>{ AsyncStorage.setItem('Num\u Players',Num\u Players); 这个.prop
//按钮示例:
有多少人?
这个.startRound(3)}
label=“3”
>
这个.startRound(4)}
label=“4”
>
//职能:
startRound=(玩家数量)=>{
AsyncStorage.setItem('Num\u Players',Num\u Players);
这个.props.navigation.navigate('player_name_screen');
}
异步存储无法存储整数值,因此请将整数值转换为字符串
AsyncStorage.setItem('Num_Players', JSON.stringify(num_players));
或
请检查这个
你能在getNumLayers(或console.log)中显示警报吗?也许当你在componentWillMount方法中显示this.state.get_播放器时,状态还没有更新?我使用了这个:let players=wait AsyncStorage.getItem('Num_播放器')。然后(警报(播放器));我在警报中得到了“未定义”。在存储值时,我还将整数值转换为字符串。如果使用wait,则不需要使用“then”。你可以试着让玩家等待;提醒(玩家),所以当我在getNumPlayers函数中有提醒时,它就会工作。但是如果我将警报放在组件willmount中,在调用getNumPlayers之后,我得到的是“null”。所以我想不管我需要对这个数字做什么,我都应该在getNumPlayers函数中完成。特别是检查setState()的文档:setState()并不总是立即更新组件。它可以批处理更新或将更新推迟到以后。这使得在调用setState()之后立即读取This.state成为一个潜在的陷阱。这对我也有帮助。没有意识到我必须转换成字符串。谢谢
AsyncStorage.setItem('Num_Players', ''+num_players);