开发者问题收集

react-native FlatList undefined 不是一个对象(评估“props.getItem”)

2021-11-11
2218

我正在构建一个 React Native 应用,但在使用 FlatList 时遇到了问题。我想问题可能出在我尝试实现它的方式上,所以我使用了 https://reactnative.dev/docs/flatlist 中的示例代码,并尝试单独运行它。

无论我如何尝试,我都会收到错误:

undefined 不是对象(评估“props.getItem”)

这是从 FlatList.js 第 450 行生成的。

该文件中的第 449 行和第 450 行是:

_checkProps(props: Props<ItemT>) {
   const {

这是来自与 React Native 捆绑在一起的 FlatList.js。

我使用的是 React Native 0.65.1。

这是我尝试运行的代码,它给了我错误:

import React from 'react';
import {
  SafeAreaView,
  View,
  FlatList,
  StyleSheet,
  Text,
  StatusBar,
} from 'react-native';

const DATA = [
  {
    id: 'bd7acbea-c1b1-46c2-aed5-3ad53abb28ba',
    title: 'First Item',
  },
  {
    id: '3ac68afc-c605-48d3-a4f8-fbd91aa97f63',
    title: 'Second Item',
  },
  {
    id: '58694a0f-3da1-471f-bd96-145571e29d72',
    title: 'Third Item',
  },
];

const Item = ({title}) => (
  <View style={styles.item}>
    <Text style={styles.title}>{title}</Text>
  </View>
);

const ModalTrackSleep = () => {
  const renderItem = ({item}) => <Item title={item.title} />;

  return (
    <SafeAreaView style={styles.container}>
      <FlatList
        data={DATA}
        renderItem={renderItem}
        keyExtractor={item => item.id}
      />
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: StatusBar.currentHeight || 0,
  },
  item: {
    backgroundColor: '#f9c2ff',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 16,
  },
  title: {
    fontSize: 32,
  },
});

export default ModalTrackSleep;
1个回答

我必须从我的 babel.config.js 中删除 '@babel/plugin-proposal-private-methods'、'@babel/plugin-proposal-class-properties' 然后 FlatList 才能再次工作。奇怪的是,FlatList 以前可以与这些 babel 插件一起使用。在添加和删除 react-native-geolocation 模块后,这个问题就开始出现了。我还必须重新做我的类中的私有方法和属性,这很不幸。

d36williams
2021-12-08