我有一个react原生应用程序,我尝试显示一些数组对象的名称。
这是一个简单的例子:
/* eslint-disable prettier/prettier */
import React, { useContext } from "react";
import { CategoryContext } from "../../../services/category/category.context";
import { CategoryList } from "./category.screen";
import { SafeArea } from "../../../components/utility/safe-area.component";
import { Spacer } from "../../../components/spacer/spacer.component";
import { Text } from "react-native-paper";
const data = [
{
name: "roofvogels",
},
{
name: "parkieten",
},
];
export const SubCategoryScreen = () => {
return (
<SafeArea>
<CategoryList
data={data}
renderItem={({ item }) => {
console.log("data", data);
return (
<>
<Spacer position="bottom" size="large">
<Text>{data}</Text>
</Spacer>
</>
);
}}
keyExtractor={(item) => item.id}
/>
</SafeArea>
);
};
类别列表:
export const CategoryList = styled(FlatList).attrs({
contentContainerStyle: {
padding: 16,
},
})``;
如果我这么做
<Text>{data[0].name}</Text>
它的回报是屋顶狗的两倍。
所以我只想显示这两个名字:
屋顶福格尔公园
但如果我试一下,就会得到这个错误:
Error: Objects are not valid as a React child (found: object with keys {name}). If you meant to render a collection of children, use an array instead.
问:如何显示这两个名称?
1条答案
按热度按时间oxf4rvwz1#
data
是一个数组,它不会直接转换为任何有意义的输出。您可以在该数组上使用.map
,并从每个对象中输出所需的值。例如:或者将每个元素放入其自己的
<Text>
元素中:无论您希望如何组织标记并设置其样式,关键是您不能直接输出数组或对象,而是可以循环访问该数组和/或输出该对象的特定值。
**编辑:**进一步检查......您已经将
data
传递给<CategoryList>
组件。并且renderItem
函数在语义上 * 暗示 * 它将 * 已经 * 被调用用于该数组中的每一项。是这样吗?回调中的item
是什么?你 * 可能 * 只是想从那里渲染对象?:
最终,这里的任何人都只能猜测。这取决于你是否理解和澄清你正在使用的数据结构和组件。根本问题仍然是一样的,你不能直接输出一个对象或数组,而是输出其中的值。* 你想在UI中输出哪个值 *,这取决于你。