undefined不是对象(正在评估'_this2.props.navigation')或与其他导航相比结果不一致

时间:2018-12-03 04:09:14

标签: reactjs react-native react-navigation

每当我单击呈现的行之一时,我就会在这段代码上出现错误。

renderRow(task, sectionID, rowID, hightlightRow) {
    return (
        <TouchableHighlight style={styles.button} onPress={()=>{
            this.props.navigation.navigate('FavTeams', {login: this.props.navigation.getParam('login', '')});
        }}>
        <Text style={styles.title}>{task.teamtag}||{task.teamname}</Text>
        </TouchableHighlight>
    )
}

但是,当我在其他页面上测试this.props.navigation.navigate时,这段代码可以与其他按钮正常工作。这是唯一我对这段代码有疑问的情况。

页面是AddTeam,这是我的路线导航代码:

const RootStack = createStackNavigator(
{
    Home: {
      screen: Login
    },
    Signup: {
      screen: SignUp
    },
    Dashboard: {
      screen: Dashboard
    },
    FavTeams: {
      screen: FavouriteTeams
    },
    UpcomingGames:{
      screen: UpcomingComponent
    },
    Standings:{
      screen: StandingsComponent
    },
    AddTeam:{
      screen: AddTeams
    }
},
{
    initialRouteName: 'Home'
}

);

2 个答案:

答案 0 :(得分:0)

我认为这里的根本问题是navigation属性没有传递,或者没有正确传递给您要从中调用它的组件。

答案 1 :(得分:0)

我找到了解决方案。显然,ListView充当其自己的组成部分。因此,通过将this.props.navigation传递给用于呈现行的参数之一,该函数现在可以用于调用以转到其他页面。

一个例子:

this.getSomeData().then((response)=>{
    resp = response
    for(someData in response){
        resp[someData].nav = this.props.navigation
    }
    this.setState({
        someDataSource = ListView.DataSource().cloneWithRows(resp)
    })
})

通过推动this.props.navigation,我可以将其用作task.nav

renderRow(task, sectionID, rowID, hightlightRow) {
    return (
        <TouchableHighlight style={styles.button} onPress={()=>{
            task.nav.navigate('FavTeams', {login: task.user);
        }}>
        <Text style={styles.title}>{task.teamtag}||{task.teamname}</Text>
        </TouchableHighlight>
    )
}

现在的问题是如何将数据传递到其他页面