React-Native:AsyncStorage.getItem 不起作用.我已经从反应原生社区安装了AsyncSto



我有一个带有按钮的屏幕,用于选择游戏的玩家数量。单击其中任何一个按钮都会调用函数,将适当的数字传递到函数中,将该数字存储在异步存储中,然后导航到下一个屏幕。请参阅下面的代码:

//Example of the buttons:
<Text style={styles.text}>
  How Many Players?
</Text>
<PrimaryButton
  onPress={() => this.startRound(3)}
  label="3"
>
</PrimaryButton>
<PrimaryButton
  onPress={() => this.startRound(4)}
  label="4"
>
</PrimaryButton>
//The function:
startRound = (num_players) => {
  AsyncStorage.setItem('Num_Players', num_players);
  this.props.navigation.navigate('player_names_screen');
}

在下一个屏幕上,如果我尝试使用 AsyncStorage.getItem 来获取这个数字,这样我就可以用它做一些事情,我只会得到 null。请参阅下面的代码:

constructor (props) {
        super(props);
        this.state = {
            get_players: null
        }
    }
    componentWillMount = () => {
        this.getNumPlayers();
        var players = this.state.get_players;
        alert(players);
    }
    getNumPlayers = async () => {
        let players = await AsyncStorage.getItem('Num_Players');
        this.setState({get_players: players});
    }

正在使用alert函数来查看我从使用AsyncStorage.getItem中获得的结果,正如我之前所说,它显示"null"。正如标题中所述,我已经从 react-native-community 安装了异步存储,并且正在使用"从'@react-native-community/async-storage'导入 AsyncStorage;"。

AsyncStorage 无法存储交互器值,因此将交互器值转换为字符串

AsyncStorage.setItem('Num_Players', JSON.stringify(num_players)); 

AsyncStorage.setItem('Num_Players', ''+num_players); 

请检查此

https://snack.expo.io/@vishal7008/convert-variable-stored-in-asyncstorage-then-state-to-number

最新更新