react-native如何在facebook登录和注销后刷新页面

Posted

技术标签:

【中文标题】react-native如何在facebook登录和注销后刷新页面【英文标题】:react-native how to refresh the page after facebook log and logout 【发布时间】:2015-07-17 12:41:52 【问题描述】:

使用React-native 构建我的第一个移动应用程序。 我正在使用 Parse 作为后端。 4 个文件,3 个屏幕: index.io.jsfb_login.jsuser_page.jstheme_list.js

render: function() 
    var render_screen;
    if (Global.is_signed_in())

        return <Navigatorios
            style=styles.container
            ref='nav'
            initialRoute=
                title: 'Tour Champ',
                component: ThemeList,
                rightButtonTitle: tc.user.displayName.split(' ')[0],
                onRightButtonPress: this._handleUserDataPress
            />;

    else
        render_screen = 'authenticate';
    

    return (
        <Navigator
            initialRoute= id: render_screen
            renderScene=this.renderScene
            configureScene=(route) => 
                if (route.sceneConfig) 
                    return route.sceneConfig;
                

                return Navigator.SceneConfigs.FloatFromRight;
            
            onBack=() => 
                if (route.index > 0) 
                    navigator.pop();
                
            
        />

    );


    renderScene(route, nav) 
    console.log('in renderScene');
    switch (route.id) 
        case 'authenticate':
            return <LoginScreen navigator=nav />;
        case 'theme_list':
            return <ThemeList navigator=nav />;
        default:
            return  <View>Error</View>;
    
,

我可以登录和注销,问题是我必须手动刷新才能获得主页/登录页面(登录/注销后)。 问题是: 从 fb_login.js 方法登录后我应该做什么:

login_user(fb_user, password)
var that = this;
Parse.User.logIn(fb_user.id, password).then(function(user) 
  console.log('here in logged_in');
  tc.user = user.attributes;
  Global.initializeUser(user);
  //that.props.navigator.pop();
  //that.props.navigator.replace(id: 'theme_list');
  that.setState(result: 'logged_in', user: user.attributes);
, function(msg) 
  that.setState(result: 'failure logged_id');
);

,

【问题讨论】:

【参考方案1】:

好的,所以我最终使用了这篇文章中的事件发射器 https://colinramsay.co.uk/2015/07/04/react-native-eventemitters.html

代码如下所示: index.io.js

var EventEmitter = require('EventEmitter');
var Subscribable = require('Subscribable');

window.EventEmitter = EventEmitter;
window.Subscribable = Subscribable;

    var TourChampIOs = React.createClass(
    mixins: [Subscribable.Mixin],
   componentWillMount() 
        this.eventEmitter = new EventEmitter();
    ,

    componentDidMount() 

        this.addListenerOn(this.eventEmitter, 'logout_success',  this.logoutCallback);
    ,
   logoutCallback(args)
        p('logout callback');
        this.setState(
            fake: args.someArg
        );
    ,

fb_login.js

 login_user(fb_user, password)
var that = this;
Parse.User.logIn(fb_user.id, password).then(function(user) 
  tc.user = user.attributes;
  Global.initializeUser(user);
  that.props.navigator.pop();
  that.setState(result: 'logged_in', user: user.attributes);
  that.props.props.events.emit('fb_login_success',  someArg: 'argValue' );
, function(msg) 
  that.setState(result: 'failure logged_id');
);

,

【讨论】:

以上是关于react-native如何在facebook登录和注销后刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

Facebook在android的react-native应用程序中登录

在 react-native 和 firebase 3.1 中登录 Facebook

facebook登录错误,react-native ios expo

React-Native Expo,Facebook 登录无法在 Android 设备上运行

如何在 React Native 中进行 Facebook 登录?

React-native Log in with Facebook App 刷新应用