为什么我的 FlatList 没有显示在 React Native 中?

Why isn't my FlatList showing in React Native?

我正在学习教程,但在编写代码时卡住了,

为什么我的 FlatList 没有显示?

App.js 只是 returning MessagesScreen“屏幕”。

这是我的 MessagesScreen 代码:

import React from "react";
import { FlatList } from "react-native";

import ListItem from "../components/ListItem";

const messages = [
  {
    id: 1,
    title: "T1",
    description: "D1",
    image: require("../assets/mosh.jpg"),
  },
  {
    id: 2,
    title: "T2",
    description: "D2",
    image: require("../assets/mosh.jpg"),
  },
  {
    id: 3,
    title: "T3",
    description: "D3",
    image: require("../assets/mosh.jpg"),
  },
  {
    id: 4,
    title: "T4",
    description: "D4",
    image: require("../assets/mosh.jpg"),
  },
];

const MessagesScreen = () => {
  return (
    <FlatList>
      data={messages}
      keyExtractor={(message) => message.id.toString()}
      renderItem=
      {({ item }) => {
        return (
          <ListItem
            title={item.title}
            subTitle={item.subTitle}
            image={item.image}
          />
        );
      }}
    </FlatList>
  );
};

export default MessagesScreen;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

这是我的 ListItem 组件:

import React from "react";
import { View, StyleSheet, Image } from "react-native";
import AppText from "./AppText";

import colors from "../config/colors";

function ListItem({ title, subTitle, image }) {
  return (
    <View style={styles.container}>
      <Image style={styles.image} source={image} />
      <View>
        <AppText style={styles.title}>{title}</AppText>
        <AppText style={styles.subTitle}>{subTitle}</AppText>
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flexDirection: "row",
  },
  image: {
    width: 70,
    height: 70,
    borderRadius: 35,
    marginRight: 10,
  },
  subTitle: {
    color: colors.medium,
  },
  title: {
    fontWeight: "500",
  },
});

export default ListItem;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

我试过的是在“renderItem”中使用 return,但没有工作,也没有工作。代码没有给我任何错误,所以我看不出问题在哪里。

您正在访问您的项目中不存在的 属性:subTitle。您是要使用 description 吗?

此外,我认为您不能像那样传递 require 调用的结果。尝试传递原始 url 并将要求放在 image={} 道具中而不是

哦,这只是一个快速修复。

FlatList 应该是一个标签:

const MessagesScreen = () => {
  return (
    <FlatList // <--- edit here
      data={messages}
      keyExtractor={(message) => message.id.toString()}
      renderItem=
      {({ item }) => {
        return (
          <ListItem
            title={item.title}
            subTitle={item.subTitle}
            image={item.image}
          />
        );
      }}
    /> // <--- and here
  );
};

这里有一个codesandbox来演示