ios - 检查用户是否登录/保留用户信息 react native

标签 ios facebook reactjs react-native

我一直在关注React Native上的文档构建我的应用程序。
我正在尝试登录用户并能够检查用户是否已登录或用户数据是否存在。

这是我到目前为止所尝试的,但我真的看不出我做错了什么。

var starterApp  = React.createClass(
{
    user:{},

    getInitialState()
    {
        console.log('initial state');
        return {isLoggedIn:this.isLoggedIn ? this.isLoggedIn : 0};
    },
    componentWillMount()
    {
        console.log('will mount');
        console.log(this.state.isLoggedIn);
        //this.state.isLoggedIn = 1;
        //this.setState({isLoggedIn:1});
        //this.user= {name:'john', lastName:'doe'};
    },

    observe(){
        console.log('observe');
    },
    componentDidMount()
    {
        console.log('mounted');
    },
    render()
    {
        console.log('rendered');
        return (
            <View style={styles.container}>
                <Text>
                    {'YOOOO'}
                </Text>
                <Text>
                    {this.state.isLoggedIn}
                </Text>
            </View>
        );
    }
});

在 componentWillMount 函数中,我设置状态然后将其注释掉。之后,当我刷新时,它会回到初始状态。我如何保留用户的数据以供下次刷新,直到我将其注销。需要坚持。

提前致谢。

最佳答案

AsyncStorage这是要走的路。

您可以使用 get/set 方法根据您的 session 信息设置存储 key 。我开始尝试使用 localStorage 来存储状态,但是虽然这适用于调试 session (如果您使用 chrome/safari 进行调试),但当您在实际设备上运行应用程序时它不起作用。

一个简单的方法是使用类似 -

AsyncStorage.setItem('userSession', JSON.stringify(sessionData));

当您想要保存 session 时 -

AsyncStorage.getItem('userSession', 
  (rawData) => {
    this.setState({session: JSON.parse(rawData)});
  },
  (error) => {
    // whatever you want to do here.
  }
);`

当您想要恢复它时。

我目前在我的应用程序中使用 Fluxxor,因此我可以通过使用 AsyncStorage.multiSet 循环浏览它们来选择要保存的存储。我还可以在应用程序初始化时使用 AsyncStorage.multiGet 恢复所有这些内容。

我要提醒您的唯一一件事是存储是异步的,因此如果您遇到错误,可能是因为您在 AsyncStorage 给您响应之前已经初始化了应用程序的一部分。对于您正在处理的上述应用程序代码,您可能会在没有数据的情况下呈现应用程序的短暂时间,因此您可能需要某种占位符来表示该加载时间,或延迟呈现。

关于ios - 检查用户是否登录/保留用户信息 react native ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31796414/

相关文章:

ios - 如何在 swift 5 中使用动态键处理对象映射

iphone - iOS 5 UIView drawRect 覆盖在设备上不起作用

ios - 在 UITableView 中更改数据库 JSON 数组数据时出现问题

php - 实时更新后获取数据

Facebook:是否有可能深入了解特定 OpenGraph 对象的印象?

reactjs - 草稿 js 错误,在内容 block 末尾选择 if 装饰器

javascript - Formik React 使用 2 个按钮(提交和保存)提交表单 - 保存按钮不触发验证

ios - react native : Keyboard dismiss when changing focus in ScrollView

javascript - Facebook 删除评论 API 问题 (#200) 应用程序没有足够的权限执行此操作以删除评论

node.js - Material-ui 官方 SSR 示例在生产服务器中不起作用