1

我试图发送一个RouteKey道具,然后尝试在链接函数中使用道具。发送道具,然后在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]()的任何静态方法。当方法名称作为字符串时,它特别有用。 (就像你的情况)。

所以你的情况,这将是

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

,你可以遵循的是另一种方法,你可以直接通过Actions.assetsList方法为道具,在你MenuItem组件调用它。现在

<MenuItem scene={Actions.assetsList} /> 

,在你MenuItem组件,你可以调用这个方法props.scene()。这两种方法都可以正常工作。

这是链接到我的answer在类似的问题。