反应原生异步存储渲染错误发生,即使它被调用并在文档中实现

Posted

技术标签:

【中文标题】反应原生异步存储渲染错误发生,即使它被调用并在文档中实现【英文标题】:react native async storage render error occurred even though it was called and implemented as it is in the documents 【发布时间】:2021-11-22 06:57:05 【问题描述】:

ERROR TypeError: undefined is not an object (evaluate '_$$_REQUIRE(_dependencyMap[6], "@react-native-async-storage/async-storage").AsyncStorage.getItem')

此错误位于: 在应用程序中(在 renderApplication.js:48) 在 RCTView 中(在 View.js:32) 在视图中(在 AppContainer.js:106) 在 RCTView 中(在 View.js:32) 在视图中(在 AppContainer.js:133) 在 AppContainer 中(在 renderApplication.js:41)

块引用 我的代码:`

import React from 'react';
import  NavigationContainer  from '@react-navigation/native';
import  createStackNavigator  from '@react-navigation/stack';
import OnboardingScreen from './Component/Onboardingscreen';
import LoginScreen from './Component/Loginscreen';
import  AsyncStorage  from '@react-native-async-storage/async-storage';
import  useEffect  from 'react';
const AppStack = createStackNavigator();

 const App =() => 
     const [isFirstLaunch, setIsFirstLaunch,] = React.useState(null);

     useEffect(() => 
         AsyncStorage.getItem('alreadyLaunched').then(value => 
             if(value == null) 
                 AsyncStorage.setItem('alreadyLaunched','true');
                 setIsFirstLaunch(true);
              else 
                 setIsFirstLaunch(false);
             
         );
     , []);
     
     if (isFirstLaunch == null) 
         return null;
      else if ( isFirstLaunch == true )
        return (
            <NavigationContainer>
                <AppStack.Navigator
                headerMode='none'
                >
                    <AppStack.Screen name="OnboardingScreen" component=OnboardingScreen/>
                    <AppStack.Screen name='login' component=LoginScreen />
                </AppStack.Navigator>
            </NavigationContainer>
        );
      else 
    return  <LoginScreen />;
 


export default App;

`

【问题讨论】:

请提供一些您尝试过的代码并查看此页面:***.com/help/how-to-ask 提供,请检查 请看我的回复。 【参考方案1】:

如the docs 中所述,AsyncStorage 应作为默认导入而不是命名导入导入。

所以替换:

import  AsyncStorage  from '@react-native-async-storage/async-storage';

作者:

import AsyncStorage from '@react-native-async-storage/async-storage';

【讨论】:

是的,工作,谢谢! ? @yogaprasanth 请将我的回答标记为已接受。见:meta.stackexchange.com/questions/5234/…

以上是关于反应原生异步存储渲染错误发生,即使它被调用并在文档中实现的主要内容,如果未能解决你的问题,请参考以下文章

反应原生异步存储问题

渲染后调用的函数反应原生

反应等待异步还是重新渲染?

将原生 iOS 应用的数据迁移到 React Native 应用的异步存储

即使道具没有改变,为啥还要对重新渲染组件做出反应?

动作必须是普通对象。将自定义中间件用于异步功能。反应原生