如何将 React Native Navigation Stack 与 class 组件一起使用?

How do I use the React Native Navigation Stack with class components?

我正在处理 React Native 项目,但在使用 React Native 导航堆栈时遇到问题。我之前使用过功能组件,但在这个特定项目中,我使用的是 class 组件,我不确定如何正确传递 props 来这样做。

我试图将 props 传递给我的构造函数并使用 props.navigation.navigate 但我收到了这个错误。

TypeError: undefined is not an object (evaluating '_this2.props.navigation.navigate')

我确定这是一个简单的修复,但我不确定如何将导航道具传递给这个 class。

render(){
  return (
    <View style={styles.NoChoresContainer}>
      <View style={styles.LogoPH}><AntDesign name="minussquareo" size={100} color="black" /></View>
      <View style={styles.NoChoresTextContainer}>
        <Text style={styles.NoChoresText}>You have no chores!</Text>
      </View>
      <TouchableWithoutFeedback style={styles.NoChoresTextContainer} onPress={() => this.props.navigation.navigate('AddChores')}>
        <Text style={styles.NoChoresButton}> 
          <AntDesign name="pluscircleo" size={20} style={styles.AddCircle} /> 
          Add a chore
        </Text>
      </TouchableWithoutFeedback>
    </View>
    
  );
    }

这也是我传递道具的方式

class NoChores extends Component{
  constructor(props) {
    super(props);
    this.state = {

    };
    
  }

这是我的堆栈导航器

<NavigationContainer>
    <Stack.Navigator
      screenOptions={{
        headerStyle: {
          backgroundColor: "#FFA06A"
        },
        headerTintColor: "#fff",
        headerTitleStyle: {
          fontWeight: "bold",
        },
      }}
    >
      <Stack.Screen
        name="Home"
        component={Home}
        options={{
          headerTitle: (props) => <Title></Title>,
        }}
      />
      <Stack.Screen
        name="AddChores"
        component={AddChores}
        options={{
          headerTitle: (props) => <Title>Add Chores</Title>,
        }}
      />

    </Stack.Navigator>
  </NavigationContainer>

好的,所以我的第一个组件已安装并且堆栈屏幕内部包含导航道具。从那里,我只需要通过道具将导航传递给渲染的每个组件,直到我最终到达我的目标组件。

第一个组件:

class Home extends Component{
  constructor(props) {
    super(props);
    this.state = {
      
    };
  }

    render(){
  return (
    <SafeAreaView styles={styles.Container}>
    <StatusBar style="auto" />
    <View>
    <Year nav={this.props}/>

    </View>
  </SafeAreaView>
    
  );
    }
}
export default Home;

下一个组件传递道具:

class Year extends Component{
  constructor(props) {
    super(props);
    dayShowing:<Day nav={this.props.nav} />,
    };
  }