0

我正在使用 UI Kitten UI 工具包构建 React-Native CLI 应用程序。在我的渲染中,我有以下列表。

  <List
    style={styles.listContainer}
    data={providerTypes}
    renderItem={renderItem}
    keyExtractor={(item) => item.Id.toString()}
  />

我有这些用于列表项和 onPress 事件的方法。

 const renderItem = ({item, index}) => (
    <ListItem
      title={`${item.ServiceCategory}`}
      description={`${item.ServiceType} `}
      accessoryRight={renderItemIcon}
      onPress={(item) => typeSelected(item)}
    />
  );
  const typeSelected = (item) => {
    console.log('item: ', item);
    console.log('item.Id: ', item.Id);
    alert('You touched list item: ', item.Id);
  };

当 typeSelected 方法被触发时,item.Id 为 null,但 item 是一个拥有如此多数据的巨型对象,但我在其中的任何地方都找不到我的 item 数据?

我对 Kitten 库很陌生,我对 TypeScript 了解不多。我也没有在 RN 应用程序中使用 TypeScript,所以我正在努力弄清楚如何在这里使用它。

4

2 回答 2

1

问题是你得到的是偶数而不是物品

当你这样做时

onPress={(item) => typeSelected(item)}

项目是指事件而不是索引中的项目

你必须把它改成

onPress={() => typeSelected(item)}
于 2020-06-22T06:21:33.230 回答
0

你可以简单地尝试

onChangeText={item => typeSelected(item)} 

或者

onChange={item => typeSelected(item)} 

方法,因为来自 react-native-ui-kitten 的 ListItem 使用来自 react-native Flatlist 组件的道具

于 2020-06-22T05:42:53.397 回答