1

私はRouteKey支柱を送信し、連鎖機能内で支柱を使用しようとしています。ここでPropを送信し、それをReactの関数として使用しますか?

は私のコンポーネントです:

<MenuItem RouterKey={'assetsList'} /> 

そして、コンポーネント定義内で、私はアクションがそうのような関数の中にそれを使用しようとしています:

import { Actions } from 'react-native-router-flux'; 
    const MenuItem = (props) => { 
    return (
     <TouchableWithoutFeedback onPress={() => { return `${Actions}.${props.RouterKey}()`; }}> 
     <View> 
     //somethings here... 
     </View> 
     </TouchableWithoutFeedback> 
); 
}; 

は基本的に私が何をしたいです。

<TouchableWithoutFeedback onPress={() => { Actions.whateverWasPassed(); }}> 

ただし、これはできません。私はここで何が欠けていますか?私はそれが間違っている方法を知っている。これを行う正しい方法は何ですか?

+0

'$ {Actions}。$ {props.RouterKey}'(();)を試してみてください。バックチックの外側の括弧。それがうまくいかない場合は、 'Actions [props.routerKey]()'を試すこともできます。 –

+0

@HardikModha:試してみました..働いていません。 –

+1

'Actions [props.routerKey]()'を試すことができますか? –

答えて

4

任意の静的メソッドをClassName[methodName]()で動的に呼び出すことができます。これは、メソッド名を文字列として持つ場合に特に便利です。 (あなたの場合と同じように)。

だからあなたの場合には、それはあなたが、あなたが直接小道具としてActions.assetsList方法をパスし、自分のMenuItemコンポーネントでそれを呼び出すことができます従うことができ

<TouchableWithoutFeedback onPress={() => { return Actions[props.RouterKey]();}}> 

別のアプローチになります。

<MenuItem scene={Actions.assetsList} /> 

今、あなたのMenuItemコンポーネントでは、props.scene()として、このメソッドを呼び出すことができます。どちらの方法も問題なく動作します。

これは私の同じような質問の私のanswerへのリンクです。

関連する問題