React Native 我尝试在注销时清除AsynStorage

kx7yvsdv  于 2023-05-07  发布在  React
关注(0)|答案(3)|浏览(194)

我正在使用react native开发一个应用程序,我在使用AsyncStorage时遇到了这个问题。我在登录时存储用户数据,然后在主页面上获取数据。我只是想在一个小的欢迎消息中显示用户的名字,然后如果用户退出,我需要清除存储,然后获取下一个用户在设备上登录的存储并显示他们的名字。
问题是我第一次登录用户名时不显示,只有当我注销并重新登录时才显示该名称。不仅如此,它似乎还保留了最后一个登录的人的名字,并在下次登录时显示该名字。
任何帮助将不胜感激。
下面是获取和显示用户名的主代码

AsyncStorage.getItem('user_data', (err, result) => {
        console.log(result);
        var userdata = JSON.parse(result);
        console.log(userdata);
        firstname = userdata.firstName;
        lastname = userdata.lastName;
    });

    const history = useHistory();
    const doLogout = event => {
        event.preventDefault();
        history.push('/');
        AsyncStorage.removeItem('user_data', (err, result) => {
            console.log(result);
        });
    };

    return (
        <View style={styles.container}>
            <Text>Welcome {firstname} </Text>
            <View style={{ marginTop: 10 }}>
                <TouchableOpacity
                    style={styles.loginbut}
                    activeOpacity={.5}
                    onPress={doLogout}
                >
                    <View style={{ flexDirection: 'row', alignSelf: 'center' }}>
                        <FontAwesomeIcon icon={faSignOutAlt} size={20} style={{ color: '#ffffff' }} />
                        <Text style={{ textAlign: 'center', fontWeight: 'bold', color: 'white' }}> Sign Out </Text>
                    </View>
                </TouchableOpacity>
            </View>
        </View>
     );

} export default MainUI```
2izufjch

2izufjch1#

试试这边

async removeItemValue(key) {
    try {
        await AsyncStorage.removeItem(key);
        return true;
    }
    catch(exception) {
        return false;
    }
}
5jvtdoz2

5jvtdoz22#

我觉得在进程运行过程中,如果你想在注销后清除用户数据,最好使用reduxcontext来存储。
AsyncStorage类似于您希望在用户退出进程后存储一些数据。
比如登录电子邮件或一些应用程序设置。

cczfrluj

cczfrluj3#

尝试完全清除AsyncStorage。

try {
    await AsyncStorage.clear();
} catch(e) {
    console.log(err);
}

相关问题