2016-05-26 1 views
0

内の関数を呼び出すに反応しますはネイティブナビゲーター、トラブル私が反応ネイティブナビゲーター・コンポーネントを使用している、と私はそのrenderScene方法で設定ルーティングを持ってRenderScene

toggleSideMenu() { 
    this.setState({ 
     menuDisableGestures: false 
    }); 
} 

renderScene(route, navigator) { 
    switch (route.name) { 
     case "SecondView": 
     this.toggleSideMenu.bind() 
     return <SecondView navigator={navigator} /> 
.... 

ただし、toggleSideMenuは呼び出されません。次のように、外部メソッドtoggleSideMenuが呼び出されます。

(例えばrender内など)は、既存の状態遷移時に更新できません:私はthis.toggleSideMenu.bind()からthis.toggleSideMenu()に自分のコールを変更した場合、私はというエラーを取得します。レンダリング方法は、小道具と州の純粋な機能でなければなりません。

私がrenderScene内から外部関数を呼び出す方法についてのアイデアはありますか?

答えて

1

renderScene関数から何の問題もなく関数を呼び出すことができます。 使用this.toggleSideMenu(); ここでは、toggleSidemenu関数内の状態を更新しています。

としては

問題がSETSTATEは(shouldComponentUpdateに応じて、潜在的に)再描画が発生することがあり、thisで説明しました。 render関数内でsetState呼び出しがあった場合は、さらに別のレンダリングがトリガーされます。あなたはおそらく無限ループの再レンダリングに終わるでしょう。いくつかの非同期操作の結果としてsetStateを使用することを止めるものはありません(実際は非常に一般的です)。状態の更新で実行されるコンポーネントのレンダリングや他のライフサイクルのメソッド(同じ方法で無限ループに終わるはずであるshouldComponentUpdateは別のもの)にない限り、問題ありません。

したがって、toggleSidemenuからsetStateを削除すると、問題なく機能が実行されます。

関連する問題