在ScrollView中路由无法工作的TouchableHighlight

时间:2016-11-03 06:41:49

标签: react-native react-native-listview react-native-router-flux react-native-scrollview

export default class Main extends Component {    
  constructor(props) {
  super(props);    
}

  go_to_details(){
      this.props.navigator.push({
        title:'Wine Details',
        component : winedetails
      })    
  }    

  render() {

    var tmp_array = [
      {
    "product_name": "RED WINE",
    "Price": 26,
    "img": "./img/red-wine.jpg",
    "bis": "Hanau Hbf",
    "Wochentag": "Fr",
    "Zeitraum": ""
},
{
    "product_name": "GOLD WINE",
    "Price": 27,
    "img": "./img/red-wine.jpg",
    "bis": "Regensburg Hbf",
    "Wochentag": "So",
    "Zeitraum": ""
},
{
    "product_name": "ICE WINE",
    "Price": 28,
    "img": "./img/red-wine.jpg",
    "bis": "Würzburg Hbf",
    "Wochentag": "Fr",
    "Zeitraum": ""
},
{
    "product_name": "ICE SCOT WINE",
    "Price": 35,
    "img": "./img/red-wine.jpg",
    "bis": "Puttgarden",
    "Wochentag": "tgl.",
    "Zeitraum": "25.06. - 04.09."
},
{
    "product_name": "ITALIC WIN",
    "Price": 36,
    "img": "./img/red-wine.jpg",
    "bis": "Hamburg Hbf",
    "Wochentag": "tgl.",
    "Zeitraum": "25.06. - 04.09."
}
    ];

    var list = tmp_array.map(function(news, i){
      return(
        <View key={i}>
          <Text>{news.product_name}</Text>
          <View>
            <Text>{news.Price}</Text>
          </View>
          <TouchableHighlight style={globle.buy_it}
            onPress={() => this.go_to_details.bind(this) }>
            <Text style={globle.buy_it_text}>BUY THIS</Text>
          </TouchableHighlight>
        </View>
      );
    });

    return (
      <View>
        <ScrollView>
     {list}
        </ScrollView>
      </View>
    );
  }
}

这是错误

this is the error

1 个答案:

答案 0 :(得分:0)

尝试以下代码

    getRow(news, i) {
       return (
            <View key={i}>
                <Text>{news.product_name}</Text>
                <View>
                    <Text>{news.Price}</Text>
                </View>
                <TouchableHighlight
                    style={globle.buy_it}
                    onPress={this.go_to_details.bind(this)}>
                    <Text style={globle.buy_it_text}>BUY THIS</Text>
                </TouchableHighlight>
            </View>
        );
    }

   render() {

        //var tmp_array =.... //intialise array

        var list = tmp_array.map(this.getRow.bind(this));

        return (
            <View>
                <ScrollView>
                    {list}
                </ScrollView>
            </View>
        );
    }

我所做的改变是

  • 将绑定添加到地图函数调用
  • 修改了TouchableHighlight中的onPress绑定语句