2017-01-19 6 views
1

私はindex.jsのリストビューを持っています。インポートされた要素から親関数にアクセスする方法

import ResultRow from './resultRow' 

class ResultList extends Component { 
    constructor() { 

    } 

    updateDate(){ 
     //Some operation 
    } 

    onPressRow() { 
     try { 
      console.log("Selected!"); 

     //Some operation 

      this.updateDate(); // Got undefined is not a function 

     } catch (error) {  
      console.error(error); 
     } 
    } 

    renderRow(rowData) { 
     return (
      <ResultRow 
      onPress={this.onPressRow} 
      {...rowData} /> 
     ) 
     } 

    render() { 
     return (
       <ListView 
       style={[styles.container, { padding: 10, backgroundColor: '#ddd' }]} 
       dataSource={this.state.dataSource} 
       renderRow={this.renderRow.bind(this)} /> 
      ); 
    } 

} 

、以下のようなresultRow.jsファイルで、このテンプレートを使用してリストアイテムをバインドします。私は、リストビューから行を選択した場合

import React from 'react'; 
import { TouchableHighlight, StyleSheet, Image,View } from 'react-native'; 

const ResultRow = (props) => (
    <TouchableHighlight onPress={() => props.onPress()}> 
    <View> 
     <Text>My Row</Text>  
    </View> 
    </TouchableHighlight > 
); 

export default ResultRow; 

onPressイベントが呼び出されます。そしてonPressRow関数が実行されます。 onPressRow関数同じクラスの "updateDate"で定義されている別の関数を呼び出しました。私はこのように呼ぶthis.updateDate();しかし、undefined is not a function errorを得た。

私は間違っていますか?

ありがとうございます。

+2

機能をバインドするか、矢印機能を使用してください。 'this.onPressRow = this.onPressRow.bind(this);'コンストラクタ内。 – Li357

+0

@AndrewLiありがとうございます。今修正済み: – bCliks

答えて

1

bindの機能は、thisというコードでは適切なコンテキストを参照していません。あなたが機能的に結合する他の方法矢印の機能

onPressRow =() => { 
     try { 
      console.log("Selected!"); 

     //Some operation 

      this.updateDate(); 

     } catch (error) {  
      console.error(error); 
     } 
    } 

を利用することができますすることは実際には

constructor() { 
    super(); 
    this.onPressRow = this.onPressRow.bind(this); 
} 

あなたはbindへの利用を行います任意の関数が必要になりますコンストラクタでバインディングを設定することですthisはあなたの反応クラスのcontextを参照してください。

+1

あなたの例は有効ではありませんECMAScript 6.この(実験的な)機能を動作させるために何をすべきか説明してくれれば、他人にとっては役に立ちます。 –

関連する問題