私は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
を得た。
私は間違っていますか?
ありがとうございます。
機能をバインドするか、矢印機能を使用してください。 'this.onPressRow = this.onPressRow.bind(this);'コンストラクタ内。 – Li357
@AndrewLiありがとうございます。今修正済み: – bCliks