react-native 返回并刷新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-native 返回并刷新相关的知识,希望对你有一定的参考价值。
参考技术A 在项目中,不知道大家有没有遇到这样的一个问题,比如说有两个页面A,B。A页面中有某个按钮点击后可以跳转到B页面,现在有一个需求就是,我在B页面中做了某些操作,然后点击回退按钮,回到A页面,A页面中的数据也需要刷新过来。嗯,如果是做过android开发的朋友一定会知道,解决这样的需求的方法有很多,比如可以使用activity的生命周期,也可以使用广播等等,但是如果在react native中呢??我们看一下官网可以知道,react native的生命周期不是针对于页面的,而是组件,什么意思呢?也就是说这个生命周期是组件的生命周期,而不是页面的生命周期,页面在跳转的时候,页面就会回调相应的生命周期的方法,但是组件在页面跳转的时候不一定会回调相应的生命周期方法,所以react native中,使用生命周期这个方式来刷新页面,并不是最好的选择。那么react native中有没有一个类似与广播这样的东东呢。有的,就是这个东西:DeviceEventEmitter.
React-native Log in with Facebook App 刷新应用
【中文标题】React-native Log in with Facebook App 刷新应用【英文标题】:React-native Log in with Facebook App refreshes app 【发布时间】:2017-11-01 22:17:17 【问题描述】:我正在使用 react-native-fbsdk 并且在 IOS 上。当用户使用 Facebook 登录时,他们可以按下两个按钮。 使用 Facebook 应用登录或使用电话号码或电子邮件地址登录。使用电话号码或电子邮件地址登录非常有效,我获取了用户对象并为他们创建了一个用户帐户。但是当用户按下 使用 Facebook 应用程序登录 时,我不会收到用户对象,整个应用程序都会刷新,他们被推送到登录页面并且 Facebook 按钮已变为 退出。我不太确定如何解决这个问题,因为当用户使用 Facebook 应用程序登录时,我的 console.logs 或警报都没有被调用,整个应用程序只是刷新。任何帮助将不胜感激。
<LoginButton
readPermissions=["email","public_profile"]
onLoginFinished=
(error, result) =>
console.log("onLoginFinished: ", result);
if (error)
console.log("login has error: ", result.error);
else if (result.isCancelled)
console.log("login is cancelled.");
else
AccessToken.getCurrentAccessToken().then(
(data) =>
let accessToken = data.accessToken
console.log("accessToken.toString(): ", accessToken.toString())
const responseInfoCallback = (error, result) =>
if (error)
console.log('Error fetching data: ', error)
//lert('Error fetching data: ' + error.toString());
else
console.log("responseInfoCallback:", result)
this.state.fbobj = result;
this.sendAjax();
//alert('Success fetching data: ' + result.toString());
const infoRequest = new GraphRequest(
'/me',
accessToken: accessToken,
parameters:
fields:
string: 'email,name'
,
responseInfoCallback
);
// Start the graph request.
new GraphRequestManager().addRequest(infoRequest).start()
)
onLogoutFinished=() => console.log("Logout")
【问题讨论】:
【参考方案1】:在你的按钮动作中,你需要这样的东西:
import LoginManager, AccessToken from 'react-native-fbsdk'
handlePressFacebookLogin = () =>
LoginManager.logInWithReadPermissions(['public_profile', 'email']).then(
(result) =>
if (!result.isCancelled)
AccessToken.getCurrentAccessToken().then((data) =>
console.log(data)
)
)
【讨论】:
您好,感谢您的回复,我已经在上面添加了我的代码,我假设我的代码是错误的,因为我没有 LoginManager? 你能用 Github 文档中的代码做一个测试吗? github.com/facebook/react-native-fbsdk 在使用中,它说登录按钮+访问令牌,只需复制登录按钮中的代码并测试会发生什么 页面仍然只是令人遗憾地刷新 对于 Android 似乎可以工作,但对于 IOS 我相信不行,我会仔细检查我的 appdelegate.m 代码以上是关于react-native 返回并刷新的主要内容,如果未能解决你的问题,请参考以下文章
在 react-native.config.js 中检测开发环境
使用 react-native-pdf 在 react-native 上获取准确的 x 和 y 坐标
使用 Jest 运行 testing-library/react-native 时 RNEncryptedStorage 未定义
React-Native 调试工具/开发者菜单在 iOS 设备上不起作用