2016-08-05 17 views
0

私はイベント関数にと私は新しいアラートポップアップ(私はreact-portalライブラリを使用しています)を作成したいと思います:javascript関数の中からReactコンポーネント関数を呼び出す方法は?

onNewAlert: function(username) { 

    var divModal = (
     <Portal ref={'Portal'+username}> 
       <div id={'div'+username}> 
        <br /><br/ >Alert for {username} 
       </div> 
     </Portal>); 
    ... 
} 

をしかし、その後、私はPortal内にある関数を呼び出す必要があります。私がrender()の機能を持っていれば、これを参照することができますが、私はイベントに参加しています。

javascript関数でオンザフライで作成されたコンポーネントのコンポーネント関数を呼び出す方法はありますか?

+0

は、あなたは自分のポータルに ''いるisOpenは= {本当}に設定できませんか? – Aaron

+0

@Aaron [portal.jsソースコード](https://github.com/tajo/react-portal/blob/master/lib/portal.js)にそのようなプロパティは表示されませんが、アイデアのおかげで私は彼のソースコードを変更することができますね... – ibiza

+0

ドキュメントには 'isOpen'と書かれていますが、ソースコードでは' isOpened'と表示されています... – Aaron

答えて

0

portal.openPortal()と呼んでも、イベントハンドラで作成されたコンポーネントはDOMに添付されないため、何もしません。

イベントハンドラ関数でポータルをレンダリングする代わりに、イベントハンドラは、render()をトリガするコンポーネントの状態を変更する必要があります。

onNewAlert: function(username) { 
    this.setState({ showAlert: true }); 
} 

render()機能は、PortalコンポーネントのisOpenedプロパティの状態変数を使用します。

render: function() { 
    return (
     <div> 
      ... 
      <Portal isOpened={this.state.showAlert}> 
       ... 
      </Portal> 
     </div> 
    ); 
} 
関連する問題