无法隐藏在 AWS Authenticator 之前显示的反应原生闪屏

Posted

技术标签:

【中文标题】无法隐藏在 AWS Authenticator 之前显示的反应原生闪屏【英文标题】:Not able to hide react native splashscreen shown before AWS Authenticator 【发布时间】:2021-11-23 21:11:34 【问题描述】:

我正在显示 react 本机闪屏并尝试将其隐藏在 useEffect 中,但如果我在 App.js 中使用 AWS Authenticator,则不会调用 useEffect。当我不使用身份验证器时,它工作正常。

App.js

import Amplify from 'aws-amplify';
import config from './src/aws-exports';
import  withAuthenticator  from 'aws-amplify-react-native';
import Auth from '@aws-amplify/auth';
import SplashScreen from 'react-native-splash-screen';
import  useEffect  from 'react';

function App ()
  useEffect(() => 
    SplashScreen.hide();
  );

  return ( 
    <View>
    </View>
  );
;
export default withAuthenticator(App); 

如果我删除最后一行,它可以在没有 Authenticator 的情况下正常工作。

【问题讨论】:

有什么错误吗?你是怎么确定的?你没有为useEffect 提供依赖是故意的吗?其余的看起来很合理。 我现在也遇到了同样的问题,使用 withAuthenticator 时闪屏没有隐藏 【参考方案1】:

您需要更改状态才能触发 useEffect。 withAuthenticator 负责整个登录过程。所以要包括自定义,我建议使用 Authenticator (这是 WithAuthenticator 中的包装组件)。它具有 onStateChange 属性,可用于检测权限更改。

例子:

<Authenticator 
   // Fired when Authentication State changes, use it to hide/show stuff
   onStateChange=(authState) => console.log(authState) 
>
   // Default components can be customized/passed in as child components. 
   // Define them here if you used hideDefault=true
</Authenticator>

来源:AWS amplify Authenticator

【讨论】:

以上是关于无法隐藏在 AWS Authenticator 之前显示的反应原生闪屏的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cypress 测试 AWS Amplify Angular Authenticator 组件?

AWS Amplify Authenticator 和 React Native Navigation Container 如何在两者之间切换

无法解析模块“@aws-amplify/ui-react/styles.css”的路径

Linux 之 利用Google Authenticator实现用户双因素认证

vue js中的aws cognito UI表单字段问题

云功能比较