React 本机导航到另一个 class

React native navigate to another class

您好,我正在使用 stacknavigator 进行本机反应,这是我的代码

import { NavigationContainer } from '@react-navigation/native';
import {Main} from "./Main";
import {Detail} from "./Detail";
import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

function App() {
       return (
      <NavigationContainer>
      <Stack.Navigator initialRouteName="Main">
        <Stack.Screen name="Main" component={Main} />
        <Stack.Screen name="Detail" component={Detail} />
      </Stack.Navigator>
    </NavigationContainer>     
    )  
}
export default App;

在主页上运行良好。我想使用道具数据导航到详细信息页面。

主页。

import { NavigationContainer } from '@react-navigation/native'; 
import { useNavigation } from '@react-navigation/native';



    export  class Main  extends Component {
    
        constructor(props) {
            super(props);
          this.state = {
            dataSource: [],
            
      
          };
        }
      

.....

<Button
        title="Go to Details"
        onPress={() => navigation.navigate('Detail')}

当我按下按钮时,它显示

也试过这个但是它给出了另一个错误。

我如何浏览它。谢谢

import { useNavigation } from '@react-navigation/native';

function Main  () {
  const navigation = useNavigation();
          />

我更改了导航代码,现在可以导航了

<Button
        title="Go to Details"
        onPress={() => this.props.navigation.navigate('Details',{list:this.state.dataSource})  }
      />

在详细信息屏幕中 我必须设置状态数据来自道具。就这一部分

const { yourParam } = this.props;

export  class Details extends Component {

    constructor() {
      super();
      this.state = {
        dataSource: [],
      
  
      };
    }

您不需要 useNavigation()(并且您不能在 class 组件中使用挂钩)您必须使用导航道具。

this.props.navigation.navigate('Detail')

您可以将参数添加到导航功能。

this.props.navigation.navigate('Detail', { yourParam: someData });

在您的 Detail 组件上,您将能够获取参数。

const Detail = ({ route }) => {
   const { yourParam } = route.params;

   console.log(yourParam);

   return (
     <View />
   );
}

Class:

const { yourParam } = this.props;

export  class Details extends Component {

    constructor() {
      super();
      this.state = {
        dataSource: [],
      
  
      };
    }
    componentDidMount() {
       console.log(this.props.route.params)
    }
   render() {
     return (<View />) 
   }
}