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 设备上不起作用

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

webstorm中的react语句为啥没有提示