2017-03-23 4 views
0

ちょうどreactjsをしようと私は別のコンポーネントのメソッドを呼び出したい状況に出くわした:reactjsでは、別のコンポーネントからメソッドを呼び出す方法はありますか?

class MyComp extends React.Component { 

callMe(){ 
... 
     } 
} 

のでmycomp2:

import MyComp from 'myComp'; 

class MyComp2 extends React.Component { 

test(){ 
     MyComp.callMe(); 
     } 
} 

私はこれをどのように行うことができますか?

+0

あなたは常にモジュール式の関数を使用して使用することができます。 –

答えて

0

方法callMeこのを使用していない場合、あなたはそのようにそれを使用する静的としてそれをdeclearすることができます。

class MyComp extends React.Component { 

    static callMe(){ 
    ... 
    } 
} 

ない場合、あなたはそれを動作させるためにREFを使用することができます。

あなたが必要な場合があります。それはあなたのコンポーネントが互いにどのように関連しているかに依存 https://facebook.github.io/react/docs/refs-and-the-dom.html

+0

OP:これはあなたの質問に答えますが、この動作の必要性は慣用的なリアクションコードではまれですので、より多くのコードを投稿し、達成しようとしていることをお勧めします。 –

0

できません。あなたは反応コンポーネントでそれを行うことはできません。唯一の方法は、その機能を共通の祖先に移すことです。

もちろん、別の方法があります、なぜreduxを考慮しないのですか?還元状態を通した成分の反応に反応しましょう。そうすれば、このパズルは決してできません。

0

。一方が親であり、他方が子である場合、関数は親から子への小道具として渡すことができる。

class Parent extends React.Component { 
    callMe() { 
     console.log('called'); 
    } 

    render() { 
     return (
      <Child doSomething={() => this.callMe()} /> 
     ); 
    } 
} 

class Child extends React.Component { 
    render() { 
     <button onClick={this.props.doSomething}>Calls the parent fn</button> 
    } 
} 

代わりに、彼らは親子関係でない場合、あなたは、その後、機能が住むことができている親コンポーネントを導入し、同じ方法で、小道具を経由して、それを渡す必要があります。

どちらのアプローチも適合していない場合は、これを必要とするどのような動作を達成しようとしているのかをお知らせください。

関連する問題