Javascript Expo:未处理的承诺拒绝:TypeError:未定义不是对象(评估';props.navigation';)]

Javascript Expo:未处理的承诺拒绝:TypeError:未定义不是对象(评估';props.navigation';)],javascript,reactjs,react-native,expo,Javascript,Reactjs,React Native,Expo,我一直在使用React Native,我收到了这个错误,任何帮助都是值得的 我的App.js屏幕 import React,{useffect,useState}来自“React”; 从“@react-navigation/native”导入{NavigationContainer}”; 从“/navigation/AppNavigator”导入AppNavigator; 导出默认函数App(){ 返回( ); }您的Stack.screens没有用NavigationContainer包装,

我一直在使用React Native,我收到了这个错误,任何帮助都是值得的

我的App.js屏幕

import React,{useffect,useState}来自“React”;
从“@react-navigation/native”导入{NavigationContainer}”;
从“/navigation/AppNavigator”导入AppNavigator;
导出默认函数App(){
返回(
);

}
您的Stack.screens没有用NavigationContainer包装,导航道具也没有传递到您的屏幕/组件

请查收

返回(
.....
);

在您的
主屏幕.js中
将您的注销功能更改为-

  const logout = () => { // You were passing a props variable here that was undefined..
    AsyncStorage.removeItem('token').then(() => {
      props.navigation.replace('login');
    });
  };
看看我制作的零食。。。只是为了向您展示实现

我还建议您不要在
AppNavigator.js
中还原令牌。相反,您应该安装
expo应用程序加载
,并在
app.js


而且,在
useffect
中执行
async
操作也不是一个好的做法。。查看上面的
Snack
链接,了解您应该如何实施它。。我创建了它的一个复制品。看一看

是的,我正在我的App.js中这样做,我正在用我的App.js文件更新上述问题,以便您可以记录哪些道具传递到主屏幕组件。当我记录道具时,我没有定义。是的,这是因为您没有使用顶部定义的
props
。请检查我的回答Thankyou@KartikeyVaish
  const logout = () => { // You were passing a props variable here that was undefined..
    AsyncStorage.removeItem('token').then(() => {
      props.navigation.replace('login');
    });
  };