在本机中动态更改函数onPress处理程序

时间:2019-02-13 18:15:22

标签: javascript react-native

是否可以在onPress中动态更改<FlatList>函数处理程序?我有三个onPress函数,需要通过数组传递。如何动态更新传递给<TouchableOpacity>的函数或函数名(请参见下面的代码)?

我的输入数组:

const menu = [
{
  "id": 1,
  "route": "this.onBottonPressedHome.bind(this)",
  "info": "1"
},
{
    "id": 2,
    "route": "this.onBottonPressedSettings.bind(this)",
    "info":"2"
},
{
    "id": 3,
    "route": this.onBottonPressedHistory.bind(this)",
    "info": "3"
}

]

我的平面列表:

<FlatList
horizontal={true}
data={menu}
keyExtractor={item => item.id.toString()}
showsHorizontalScrollIndicator={false}
renderItem={({ item, index }) => (
    <TouchableOpacity
    onPress={item.route}
    >
        <Card>
            <CardItem style={{ backgroundColor: '#37BBE1'}}>
                <Body>
                    <View style={{ paddingTop: 10, width: 135 }}>
                        <Text style={{ fontSize: 12, textAlign:'justify', color: '#fff' }}>
                            {item.info}
                        </Text>
                    </View>
                </Body>
            </CardItem>
        </Card>
    </TouchableOpacity>

执行此操作时,出现错误,指出未在数组中定义bind。我该如何解决?

更新

我已经使用三元运算符实现了,这样好吗?这会在性能问题上造成任何问题吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您的import pandas as pd pd.Series(tags).value_counts() 数组由具有字符串值字段(即没有“真实”函数绑定)的对象项组成。

假设这是您必须解决的一个约束,则可以考虑采用另一种方法来解决此问题,在该方法中,不是在渲染时动态传递menu处理程序,而是在事件发生时动态解析该处理程序像这样:

onPress