私はReact Nativeに慣れてきました。このような設定を使用して、私はその親にさえまで子供から渡すことができるよ:イベントを子要素から曾祖父に渡す
子供:
<TouchableOpacity onPress={() => {this.props.click("Cool.")}}>
親:
constructor(props) {
super(props);
this.click = this.click.bind(this)
}
click(c) {
console.log(c) // "Cool."
}
render() {
return (
<View>
<Child click={this.click}>
</View>
}
}
しかし、私が変更した場合親の復帰:
<View>
<Child click={this.props.click}>
</View>
はその後祖父のコンポーネントを使用します。
<View>
<Parent click={this.click}>
</View>
私はクリックイベントを取得していませんが、エラー"_this2.props.click is not a function"
子要素を<TouchableOpacity onPress={this.props.click}>
に変更すると、イベントが処理されないように見えます。
究極的には、Great-Grandfatherレベルでイベントハンドラをトリガして、ルートレベルで状態を変更し、変更を下位にカスケードさせたいと思います。
あなたの 'parent'では' click'関数をバインドしますが、祖父はそれを知ることを期待していますか?あなたの '祖父 'でアクションを呼びたい場合は、そこに関数をバインドして世代を渡す必要があります – Nocebo
@Noceboこれを拡張できますか?子コンポーネントでは、 'onPress = {()=> {this.props.click(" Cool。 ")}}>'を使ってイベントをthis.props経由で親に渡します。親では、別の世代に渡すと思う 'click = {this.props.click} 'を使用しています。ここで、バインドされた' click = {this.click.bind(this) } ' – arby
あなたの説明はちょっと混乱しました。あなたは「親:」と言って、私はあなたの「親コンポーネント」が次のようになったと思った。しかし、実際にはあなたの実際の 'おじいちゃん'と ' 'はあなたの実際の '親 'コンポーネントでした。あなたはあなたのコンポーネントのラベルを変更したいかもしれません:) –
Nocebo