2017-04-05 61 views
1

我在使用tabvewAnimated内部的列表视图。现在我面临问题,同时将onPress()TouchableOpacity添加到行,其中每当页面加载和我添加this.props.navigator.push({id:8,})时它会自动触发;它给我的错误“未定义不反对(评估‘this.props.navigator.push’)”我使用Navigator和在Android上构建TouchableOpacity onpress无法正常运行原生列表视图

这里的应用程序是我的代码:

const RecievedPage = React.createClass({ 

    getInitialState() { 
     let dataSource = new ListView.DataSource({rowHasChanged:(r1,r2) => r1.guid != r2.guid}); 
     return { 
      dataSource: dataSource.cloneWithRows(dataList), 
      loader:true, 
     } 
    }, 

    display(rowData){ 
     this.props.navigator.pop(); 
     ToastAndroid.show(rowData+"", ToastAndroid.SHORT); 
    }, 

    componentWillMount() { 
     let self = this; 
     SharedPreferences.getItem("sender_id", (value) => { 
      let user_id = value; 
      let url = BASE_URL; 
      fetch(url, { 
       method: "GET", 
       headers: { 
        "Accept": "application/json", 
        "Content-Type": "application/json", 
       }, 
      }) 
       .then((response) => response.json()) 
       .then((responseData) => { 
        if (responseData.responsecode === 1) { 
         Received = responseData.data; 
         if (Received.length === 0) { 
         ToastAndroid.show("No Data found", ToastAndroid.SHORT); 
         }else{ 
          self.setState({dataSource:this.state.dataSource.cloneWithRows(Received), loader:false}); 
         } 

        } 
        else { 
         ToastAndroid.show('please try again...', ToastAndroid.SHORT); 
        } 
       }) 
       .catch(e => { 
        // ToastAndroid.show('Error:Please try again...', ToastAndroid.SHORT); 
       }) 
       .done(); 
     }); 
    }, 



    renderRow(rowData, sectionID,rowID){ 

     let QrView = (rowData.qrImageUrl!== "")? 
      <TouchableOpacity activeOpacity={.5} onPress={() => this.display(rowData.qrImageUrl)} > 
      <Image 
       source={{uri:rowData.qrImageUrl}} 
       style={{height:40,width:40,margin:15}} 
       resizeMode="contain"/> 
      </TouchableOpacity> 
      : 
      <Text style={{fontSize : 18,marginTop:15,color:"black",margin:15}} >NA</Text>; 

     return <View key={sectionID}> 
      <View style={{ flex: 1,height:70,flexDirection: 'row',justifyContent: 'space-between'}}> 

       <Text style={{fontSize : 18,marginTop:15,color:"black"}} >{rowData.sender_name}</Text> 
       <View> 
        {QrView} 
       </View> 
      </View> 
     </View> 
    }, 


    render() { 
     return(
      <ListView dataSource={this.state.dataSource} 
         renderRow={this.renderRow} 
         enableEmptySections={true} 
         style={{backgroundColor:"white", }}/> 
     ); 
    }, 
}); 

回答

4

你正在调用函数而不是传递函数。

此:

<TouchableOpacity activeOpacity={.5} onPress={this.display(rowData.qrImageUrl)}> 

应该是:

<TouchableOpacity activeOpacity={.5} onPress={() => this.display(rowData.qrImageUrl)}> 
+0

@YogeshwarNair打开有关然后一个新的问题,并尝试总结的问题是什么,你不明白这件事 –