在 React Native 的 ListView 数据源中使用 Touchable 高亮显示

Posted

技术标签:

【中文标题】在 React Native 的 ListView 数据源中使用 Touchable 高亮显示【英文标题】:Using Touchable highlight in a ListView datasource in react native 【发布时间】:2017-05-31 13:06:08 【问题描述】:

我正在使用带有数据源的 ListView,它从对服务器的休息调用中获取其数据源。

  renderRow(rowData)
    var imageURL = rowData.banner;

    return (
      <View>
        <Text >rowData.name</Text>
        <Image
          style=width: 80, height: 80
          source=uri: imageURL, width: 400, height: 400
        />
      </View>
    );
  

  render() 
    return (
      <View>
            <ListView
            enableEmptySections 
            dataSource=this.state.dataSource renderRow=this.renderRow.bind(this) 
            style=styles.listview/>

      </View>
)

现在,我想为数据源中的数据在 renderRow 函数中渲染的视图中添加一个按钮按下效果。我已经把我的代码改成了这个。

     renderRow(rowData)
        var imageURL = rowData.banner;

        return (
        <TouchableHighlight style= this.state.pressStatus ? styles.buttonPress : styles.button 
                            onPress=this._changeStyleAndNavigate.bind(this)>
          <View>
            <Text >rowData.name</Text>
            <Image
              style=width: 80, height: 80
              source=uri: imageURL, width: 400, height: 400
            />
          </View>
 </TouchableHighlight>
        );
      

  _changeStyleAndNavigate() 
    this.setState( pressStatus: true );

  

我为这个 TouchableHighlight View 提供了 2 种不同颜色的不同样式。如果用户触摸 TouchableHighlight 视图,我会更改颜色,这样会产生按钮按下的感觉。

但现在我的问题是,如果 ListView 中有不止一行,那么按下一行会改变所有行的颜色(TouchableHighlight 视图)。

那么,有没有一种方法可以为每一行指定一个 ID 并根据 ID 更改颜色?

【问题讨论】:

【参考方案1】:

请参阅 RN 文档以更轻松地解决您的问题:https://facebook.github.io/react-native/docs/touchablehighlight.html

有一个名为underlayColor 的组件属性。只需给它一个值(按下项目时您想要看到的颜色)。所以你的组件应该是这样的:

&lt;TouchableHighlight style=styles.button underlayColor='#ff0000'&gt;

【讨论】:

以上是关于在 React Native 的 ListView 数据源中使用 Touchable 高亮显示的主要内容,如果未能解决你的问题,请参考以下文章

React-Native ListView加载图片淡入淡出效果的组件

带有导航的 React-native ListView

react-native-page-listview使用方法

React Native 自定义ListView

React-Native之ListView的3种样式

ListView 部分数据(react-native)