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.js
、fb_login.js
、user_page.js
和 theme_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 设备上运行