为什么我的 React-Native 组件不渲染?

Why is my React-Native component not rendering?

所以就我自己而言,我已经完成了大量的 React 工作,但就 React Native 而言,我的经验很少。我正在尝试创建一个使用 React Navigation 跳转到页面的应用程序。它对我来说也是新的,但我读到它对本机应用程序很有用。

这是堆栈导航器设置。每个组件只是一个简单的函数,在视图标签内的文本标签中返回它的名称。

return (
  <View>
    <Text>Component</Text>
  </View>
)

这是带有堆栈导航器的App.js

import 'react-native-gesture-handler';
import React from 'react';
import { ScrollView } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

import Main from './src/components/main';
import Nav from './src/components/nav';
import Home from './src/pages/home';
import Group from './src/pages/group.js';
import Profile from './src/pages/profile';
import Calendar from './src/pages/calendar';
import Event from './src/pages/event';
import CreateEvent from './src/pages/create-event';
import CreateGroup from './src/pages/create-group';
import JoinGroup from './src/pages/join-group';

const Stack = createStackNavigator();

export default function App() {
  return (
    <ScrollView style={{ flex: 1 }}>
      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="Home" component={Home} />
          <Stack.Screen name="Group" component={Group} />
          <Stack.Screen name="Profile" component={Profile} />
          <Stack.Screen name="Calendar" component={Calendar} />
          <Stack.Screen name="Event" component={Event} />
          <Stack.Screen name="Create Event" component={CreateEvent} />
          <Stack.Screen name="Create Group" component={CreateGroup} />
          <Stack.Screen name="Join Group" component={JoinGroup} />
        </Stack.Navigator>
      </NavigationContainer>
    </ScrollView>
  )
}

默认是首页,这就是我想要的。但是,我尝试实现一个按钮,按下该按钮将导航到另一个页面 ('group')。按钮不显示。如果我实现文本标签,则不会显示任何文本。该组件肯定已正确导入,因为显示的控制台日志确实打印到控制台。

import React from 'react';
export default function Home(props) {
  return (
    <View style={{ flex: 1 }}>
      <Button style={{flex: 1, width: 200, height: 200, backgroundColor: 'black'}} title="Group" onPress={() => props.navigation.navigate('Group')}/>
    </View>
  )
}

这是应用加载后主页的样子。 Home Page

我已尝试深入研究它。我发现有多个消息来源说尝试使用 { flex: 1 } 进行样式设置,但这并没有解决问题。我试过将文件名和组件大写,没有改变。

NavigationContainer 不应该在 ScrollView 内部,您应该将 scrollview 放在页面组件中,例如主页、配置文件日历

export default function App() {
  return (

      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="Home" component={Home} />
          <Stack.Screen name="Group" component={Group} />
          <Stack.Screen name="Profile" component={Profile} />
          <Stack.Screen name="Calendar" component={Calendar} />
          <Stack.Screen name="Event" component={Event} />
          <Stack.Screen name="Create Event" component={CreateEvent} />
          <Stack.Screen name="Create Group" component={CreateGroup} />
          <Stack.Screen name="Join Group" component={JoinGroup} />
        </Stack.Navigator>
      </NavigationContainer>
  )
}

和主页组件

import React from 'react';
export default function Home(props) {
  return (
<ScrollView style={{flex:1}}>
    <View style={{ flex: 1 }}>
      <Button style={{flex: 1, width: 200, height: 200, backgroundColor: 'black'}} title="Group" onPress={() => props.navigation.navigate('Group')}/>
    </View>
</ScrollView>
  )
}