2017-01-04 10 views
1

ボタンを含むヘッダーコンポーネントがあり、クリックするとこのボタンに別のコンポーネント(モーダルページ)が表示されます。他のコンポーネントからコンポーネントメソッドを呼び出す方法は?

は、私はこのような何かを行うことができます:ここで

import ComponentToDisplay from './components/ComponentToDisplay/index' 

class Header extends React.Component { 
    constructor(props) { 
    super(props) 
    } 

    props : { 
    user: User 
    } 

    _handleInvitePlayerClick =() => { 
    this.refs.simpleDialog.show(); 
    } 

    render(){ 

    return(
    <Button onClick={this._handleInvitePlayerClick} ><myButton/></Button> 
    <ComponentToDisplay /> 

    ) 
    } 
} 

が他のコンポーネント上のボタンをクリックますときに表示されなければならないモーダルページのための私のコンポーネントです:

は、ここに私のヘッダーコンポーネントの

class ComponentToDisplay extends React.Component { 

componentDidMount() { 

} 

render() { 

return (

<div> 
    <SkyLight 
    ref="simpleDialog" 
    title={"Title for the modal"}> 
    {"Text inside the modal."} 
    <Button onClick={() => this.refs.simpleDialog.hide()}>{"Close modal"}</Button> 
    </SkyLight> 
</div> 
) 
} 
} 

ライブラリをモーダルに使用されている:https://github.com/marcio/react-skylight

+1

少なくとも ' – stinodes

+1

'に' this.refs'の下で登録されるためには、 'Component'Display'に' ref' propを追加するべきですが、正直なところ、あなたはクリック時に状態を更新し、ダイアログが表示されるかどうかを決定するダイアログが表示されます。 – stinodes

+0

[ReactJS - 別のコンポーネントから1つのコンポーネントメソッドを呼び出す]の可能な複製(https://stackoverflow.com/questions/39119537/reactjs-call-one-component-method-from-another-component) –

答えて

1
class Header extends React.Component { 
    constructor(props) { 
     super(props) 
    } 

    props: { 
     user: User 
    } 

    render() { 
     return (
      <Button onClick={() => this.refs.componentToDisplay.showMe()}><myButton /></Button> 
      <ComponentToDisplay ref="componentToDisplay" /> 
     ) 
    } 
} 

あなたの子コンポーネントに​​方法を公開してくださいビーイング:基本的には

class ComponentToDisplay extends React.Component { 

    showMe() { 
     this.refs.simpleDialog.show(); 
    } 

    render() { 
     return (
      <div> 
       <SkyLight 
        ref="simpleDialog" 
        title={"Title for the modal"}> 
        {"Text inside the modal."} 
        <Button onClick={() => this.refs.simpleDialog.hide()}>{"Close modal"}</Button> 
       </SkyLight> 
      </div> 
     ) 
    } 
} 

、あなたの子コンポーネントの独自の方法で天窓のshow()メソッドをラップされたものをここで起こっているこのような詳細(この場合、​​)。次に、親コンポーネントで、参照を追加してそのメソッドを呼び出すことができるように、インクルードされた子コンポーネントにrefを追加します。

+0

refsで混乱していましたが、今は意味があります – AziCode

+1

うれしい私は助けることができます。 –

関連する問題