undefined不是对象'this2.props.navigation.navigate'

问题描述 投票:0回答:2

我无法在另一页上导航。我在这个类中有默认的类代码,导航工作正常

export default class ClassName1 extends React.Component {
    constructor(props) {
        super(props);
    }
}

但是当我在下面的类上调用this.props.navigation时会抛出一个错误

class ClassName2 extends React.Component {
     constructor(props) {
         super(props);
     }
}

像这样我在ClassName2中调用函数

<TouchableOpacity onPress={() => this.props.navigation.navigate("Report") }>
    <Text style={style.modalContainerText}>
         inappropriate Content
    </Text>
</TouchableOpacity>

这两个类都在一个文件中。

react-native react-native-navigation
2个回答
0
投票

你的问题并不完全清楚,但我猜你在ClassName2里面使用ClassName1(有更多组件和构造函数):

class ClassName1 extends React.Component {
    render() {
        return <ClassName2 />
    }
}

现在我想你正在使用ClassName1作为反应导航的路线。 ClassName1组件通过反应导航自动获取this.props.navigation道具。要将它传递给ClassName2元素,所以它也可以调用导航,就像这样:

class ClassName1 extends React.Component {
    render() {
        return <ClassName2 navigation={this.props.navigation} />
    }
}

这是基于猜测,所以让我知道这是否会解决您的问题。如果是这样,我会更新您的问题,以提供更好地描述您的问题的信息:)


0
投票

如果您的类包含在StackNavigator函数中,您将可以访问this.props.navigation,如果不是,您必须使用withNavigation函数,如下面

使用StackNavigator的示例

import React, { Component } from 'react';
import { Button } from 'react-native';
import { StackNavigator } from 'react-navigation';

export class ClassName2 extends Component {
  render() {
    return <Button title="This will work" onPress={() => { this.props.navigation.navigate('someScreen') }} />;
  }
}

export const myStackNavigator = StackNavigator({
  myScreen: ClassName2
})

使用withNavigation的示例

import React, { Component } from 'react';
import { Button } from 'react-native';
import { withNavigation } from 'react-navigation';

class ClassName2 extends Component {
  render() {
    return <Button title="This will work" onPress={() => { this.props.navigation.navigate('someScreen') }} />;
  }
}

export default withNavigation(ClassName2);
© www.soinside.com 2019 - 2024. All rights reserved.