将导航和道具传递给反应本机组件时未定义的功能(基本断开按钮)

undefined function when passing navigation AND props to a react native component (basic disconnect button)

我是一个完全的新手,我正在尝试让堆栈导航器只有在用户登录后才能访问,这很有效,但我无法设法让断开连接按钮正常工作。 到目前为止,我正在使用一个简单的 bool 来授予访问权限。用于断开连接的函数,作为道具传递,在我使用断开连接按钮时找不到。

App/Login 屏幕:

const Stack = createStackNavigator();

export default function App() {
  const [userIsLogged, setUserLog] = useState(false);

  if (!userIsLogged) {
    return <LoginScreen setUserLog={setUserLog}/>;
  } else {
    return (
      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="Home">
            {props => <Home {...props} setUserLog={setUserLog}/>}
          </Stack.Screen>
          <Stack.Screen name="Rooms" component={Rooms}/>
        </Stack.Navigator>
      </NavigationContainer>
    );
  }
}

调用断开按钮的地方:

const Home = ({navigation}, props) => {
  return (
    <View style={styles.container}>
      <Text>Home</Text>
      <TouchableOpacity onPress={() => props.setUserLog(false)}>
        <Text>DISCONNECT</Text>
      </TouchableOpacity>
      <TouchableOpacity onPress={() => navigation.navigate('Rooms')}>
        <Text>ACCESS TO ROOMS</Text>
      </TouchableOpacity>
      <StatusBar style="auto" />
    </View>
  );
};

(代码已大大简化以仅突出显示我的问题)

改变

const Home = ({navigation}, props) => { 

const Home = (props) => {
const {navigation} = props;

return /* REST OF CODE */

({navigation}, props) 不会将道具分成两组,它会为您的函数定义两个参数。这意味着道具将永远是 undefined 因为在这种情况下你永远不会传递第二个参数。