1

我创建了 12 个元素的部分列表。这是我的代码,

render() {
    return (
      <View style={styles.container}>
        <SectionList
          renderItem={({item}) =><Text onPress={() => alert(item)} style={styles.item}>{item}</Text> }
          sections={[
            {title: 'A', data: ['Audi']},
            {title: 'B', data: ['BMW']},
            {title: 'H', data: ['Honda', 'Hyundai']},
            {title: 'J', data: ['Jaguar']},
            {title: 'K', data: ['Kia']},
            {title: 'M', data: ['Mazda','Mercedes-Benz', 'Mitsubishi']},
            {title: 'N', data: ['Nissan']},
            {title: 'T', data: ['Toyota']},
            {title: 'V', data: ['Volkswagen']},
          ]}
          renderSectionHeader={({section}) => <Text style={styles.sectionHeader}>{section.title}</Text>}
          keyExtractor={(item, index) => index}
        />
      </View>
    );
  }

现在我需要知道是否按此列表中的任何项目,然后导航到每个屏幕。这意味着如果我触摸奥迪然后导航到奥迪页面。这个怎么做?或者知道如何在没有节列表但看起来像的情况下做到这一点?

4

2 回答 2

0

首先,您需要包装您的 SectionList 屏幕和您将导航到的详细信息屏幕,

并在列表屏幕中为列表中的每个项目添加一个 onPress

navigateToDetail = car => {
  this.props.navigation.navigate(DetailScreen, {
     name: car
  }
}

render (){ 
  renderItem={({item}) =><Text onPress={navigateToDetail} style={styles.item}>{item}</Text> }
}

在您的详细信息屏幕中,您需要执行此操作

class DetailScreen extends Component {

 render() {
 const car = this.props.navigation.getParam("name", "novalue)

  return <Text>{car}</Text>
}
}

于 2020-03-22T14:38:51.843 回答
0

我找到了解决方案。只需从 onPress 函数传递section.title 或任何特定参数。然后实现这个调用 onPress 函数的代码this.props.navigation.navigate(parameter)。在我的问题中,参数之一是奥迪,记住你应该在 stacknavigator 中创建 parameter.js(audi.js) 文件。这对我来说是工作。

于 2020-03-23T15:43:20.423 回答