求助react-native-storage异步执行,判断获取的值再渲染的问题



  • 因为要求是必须登录可见的
    现在要根据保存的用户登录信息,开屏的时候选择是跳转到登录页面还是直接跳到首页
    用react-native-storage存数据
    现在是这样:
    constructor(props){
    super(props)
    this.state = {
    loginstate:false
    }
    }
    componentWillMount(){
    storage.load({
    key: 'loginState'
    }).then((ret) => {
    this.setState({
    loginstate:true,
    })
    }).catch(err => {})
    }

    let thiscomponent = this.state.loginstate?WaitingPage:LoginPage
    然后navigator调用


    问题好像这个react-native-storage是异步的
    render是先执行的
    执行完了查看state是修改了的,但是没有重新渲染
    求助下高手指导下怎么个思路写。。。



  • componentWillMount(){
    storage.load({
    key: 'loginState'
    }).then((ret) => {
    let component = ret.loginstate?NavigatorComp:LoginPage
    this.props.navigator.push({
    component: component
    })
    }).catch(err => {
    this.props.navigator.push({
    component: LoginPage
    })
    })
    }

    试了下中间用navigator过度下可以实现,不过得闪一下。。。总觉得不科学
    希望有高手提供下更合理的方法



  • 不可能由两个状态完成(未登录、已登录)
    必须还有一个中间态(正在检查登录),也就是storage异步执行的时间是不能省去的,这个时间就必须还有一个loading的界面来过渡

    参考:
    http://bbs.reactnative.cn/topic/201/如何不使用navigator空间实现跳转页面/2



  • @sunnylqm 谢谢大神 !