React用のドキュメントは、親コンポーネントがrefを介してコンポーネント関数にアクセスできるようにします。参照してください:https://facebook.github.io/react/tips/expose-component-functions.htmlReact ES6 | refを介して子コンポーネント関数にアクセスする方法
私のアプリケーションでこれを使用しようとしていますが、子関数が呼び出されたときに "未定義関数ではありません"というエラーが発生します。私はこれがReactクラスのためにES6フォーマットを使用することと何か関係があるのだろうかと思っています。なぜなら私のコードとドキュメントの間に他の違いは見られないからです。
私は以下の擬似コードのようなダイアログコンポーネントを持っています。ダイアログには、子コンテンツコンポーネントのsave()関数を呼び出す必要があるsave()を呼び出す「保存」ボタンがあります。コンテンツコンポーネントは、子フォームフィールドから情報を収集し、保存を実行します。
class MyDialog extends React.Component {
save() {
this.refs.content.save(); <-- save() is undefined
}
render() {
return (
<Dialog action={this.save.bind(this)}>
<Content ref="content"/>
</Dialog>);
}
}
class Content extends React.Component {
save() {
// Get values from child fields
// and save the content
}
}
私が代わりにコンテンツまで小道具(saveOnNextUpdate)を渡すと、それが真である時はいつでもセーブ実行が、私はむしろ仕事に上記リアクトドキュメントで詳細な方法を取得する方法を見つけ出すだろうことができます。
docアプローチを使用して子コンポーネントの機能を別の方法で使用またはアクセスする方法に関するアイデアはありますか?
あなたが反応するのどのバージョンを使用していますか? – Tyrsius
あなたの疑似例が動作します:https://jsfiddle.net/vbj34euk/それはおそらく別の問題です。本当のコードをもっと投稿できますか? – m90
ラップされたコンポーネント(reduxまたは他のプラグインに接続されているコンポーネント)の場合。ラップされたインスタンスを取得するためにgetWrappedInstance()を使用し、そのコンポーネントの状態、参照、メソッドにアクセスする必要があります。ここでビデオを説明しています - https://youtu.be/VpdKjocgCtA – Prem