Как мне объединить ListView с реагировать на навигацию - PullRequest
1 голос
/ 06 июня 2019

У меня есть список с большим количеством элементов. Я хочу коснуться элемента, а затем перейти на другую страницу.Мой вопрос, как передать navigator={this.props.navigator} на renderRow?

Спасибо!

Это мой listview:

  return (
      <ListView
        style={ styles.listView }
        dataSource={ this.state.dataSource }
        renderRow={ this.renderRow }} />
      );

Это мойrenderRow:

renderRow(event: Object) {
    return (

      <View>
      <TouchableOpacity onPress={ () => this.props.navigation.navigate('Browser', {
                                          link: event.ItemName,
                                        }) }>
        <View style={ styles.row }>
          <Text style={ styles.textContainer }>
            <Text style={ styles.title }>
              { event.ItemName }
            </Text>
            <Text style={ styles.type }>
              { event.BTContent }
            </Text>
          </Text>
        </View>
        <View style={ styles.cellBorder }></View>
        </TouchableOpacity>
      </View>

    )
  }

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Похоже, как вы должны делать это со мной. Независимо от того, используете ли вы функциональный компонент или компонент класса, реквизиты компонента будут содержать navigation. Вам не нужно ничего передавать renderRow.

sidenote: ListView устарело. Используйте FlatList или SectionList в зависимости от вашего варианта использования. https://facebook.github.io/react-native/blog/2017/03/13/better-list-views

0 голосов
/ 06 июня 2019

ListView устарел, вместо этого используйте FlatList.Если функция renderRow относится к тому же классу, который используется в качестве экрана в реагирующей навигации, у вас есть доступ к элементу навигации внутри метода, и вам не нужно ничего передавать.Если нет, пожалуйста, напишите полный соответствующий код.

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