undefined не является объектом (оценивает '_this2.props.navigation') или противоречивыми результатами по сравнению с другой навигацией - PullRequest
0 голосов
/ 03 декабря 2018

У меня возникает ошибка, связанная с этим фрагментом кода, когда я нажимаю на одну из отображаемых строк.

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 голосов
/ 04 декабря 2018

Я нашел решение.По-видимому, 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>
    )
}

Теперь проблема в том, как передать данные на другие страницы

0 голосов
/ 03 декабря 2018

Я полагаю, что основная проблема здесь в том, что navigation prop не был передан или неправильно передан компоненту, из которого вы пытаетесь вызвать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...