2017-11-23 9 views
0

親コンポーネントから子メソッドにアクセスしようとしています。これは私が_childが未定義であることを私に言ってエラーが出る)子コードがreactjsのコンポーネントメソッドへのアクセスが機能しない

class child extends Component { 

someMethod(v) { 
// do something 
} 

render(){ 
return(
... 
) 
} 
} 

のように見え、これはhoverOnに親コード

class Parent extends Component { 
hoverOn(){ 
this._Child.someMethod(10); // _Child is undefined here 
} 

render(){ 
return(
<div onMouseOver={this.hoverOn.bind(this)}> 
<OtherChild ....> 
<Child ref={(Child) => { this._Child = Child; }} /> 
</div> 
) 
} 
} 

(ある方法です。 someMethod()を親クラスから呼び出すにはどうすればよいですか?

+0

うーん。奇妙な。コードスニペットが正しいようです。 –

+0

あなたの子コンポーネントのクラス名は 'child'ですが、' Child'でなければなりません。あなたがonMouseOverイベントを持っているので、コンポーネントがマウントされる前にトリガされる可能性があります。 'this._Child && this._Child.someMethod(10);' –

答えて

0

試し追加レフリー

class Parent extends Component { 
hoverOn(){ 
    this.refs._Child.someMethod(10); 
}} 
+1

のようにチェックしてください。OPは、ドキュメントで推奨されているコールバックメソッドを使用してrefを追加しました –

+0

OPは、提案した方法よりも優れた方法を使用しています。 –

+0

ああ、ごめんなさい。私は彼がコールバックメソッドを使用したことを見ていない – Jeffin

関連する問題