Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 为什么在我的React Native FlatList中有具有相同键的double?_Json_React Native_React Native Flatlist - Fatal编程技术网

Json 为什么在我的React Native FlatList中有具有相同键的double?

Json 为什么在我的React Native FlatList中有具有相同键的double?,json,react-native,react-native-flatlist,Json,React Native,React Native Flatlist,我正在尝试获取以下端点处描述的对象: 您会注意到,有一个带有唯一标识符的_id字段 那么为什么我会得到: 警告:遇到两个具有相同密钥的子项,:。密钥应 保持唯一性,以便组件在更新过程中保持其标识。 非唯一键可能会导致复制和/或忽略子项- 该行为不受支持,可能在将来的版本中更改。” 这是我的平面列表渲染: render() { if(this.props.dataToDisplay.objects){ console.log(typeof(this.props.da

我正在尝试获取以下端点处描述的对象:

您会注意到,有一个带有唯一标识符的_id字段

那么为什么我会得到:

警告:遇到两个具有相同密钥的子项,
。密钥应 保持唯一性,以便组件在更新过程中保持其标识。 非唯一键可能会导致复制和/或忽略子项- 该行为不受支持,可能在将来的版本中更改。”

这是我的平面列表渲染:

render() {   
    if(this.props.dataToDisplay.objects){
        console.log(typeof(this.props.dataToDisplay.objects))
        console.log(this.props.dataToDisplay.objects)
        this.props.dataToDisplay.objects.forEach((item)=>{
            console.log(item)
        })

        return (
            <View style={[{backgroundColor: this.state.backgroundColor},styles.container]}>
                <FlatList
                    data={this.props.dataToDisplay.objects}
                    keyExtractor={(item, index)=>{item._id.toString()}}
                    renderItem={({item})=>{
                        <Text id={item._id}>{item.title}</Text>
                    }}
                />
            </View>
        );
}
 else {

    return (
        <View style={[{backgroundColor: 
this.state.backgroundColor},styles.container]}>
            <Text>Loading elements.</Text>
        </View>
      );
    }
  }
}
render(){
if(this.props.dataToDisplay.objects){
log(typeof(this.props.dataToDisplay.objects))
console.log(this.props.dataToDisplay.objects)
this.props.dataToDisplay.objects.forEach((项)=>{
console.log(项目)
})
返回(
{item.\u id.toString()}}
renderItem={({item})=>{
{item.title}
}}
/>
);
}
否则{
返回(
加载元件。
);
}
}
}
钥匙拔出器有问题吗? 我尝试使用keyExtractor={(项,索引)=>{item.\u id}}},但没有结果


谢谢您的时间。

使用
keydextractor={(item,index)=>{item.key}}
而不是
keydextractor={(item,index)=>index.toString()}
在您的示例中,您没有任何名为“key”的属性,这就是您有错误的原因。您应该尝试分配另一个属性,如存在于对象中的关键元素,可能是属性“\u id”,如下所示:

<FlatList
data={this.props.dataToDisplay.objects}
keyExtractor={(item, index) => {item._id}}
numColumns={2}
renderItem={({item})=>{
  <Text id={item._id}>{item.title}</Text>
}}
/> 
{item.\u id}
numColumns={2}
renderItem={({item})=>{
{item.title}
}}
/> 

钥匙拔出器
正常。
返回
功能不是:

keyExtractor={(item, index)=>{item._id.toString()}}
通过打开大括号
{}
引擎需要
return
关键字来返回任何内容。否则它将是一个
void

执行以下任一操作:

keyExtractor={(item, index)=> item._id.toString()}
或:

renderItem方法也是如此:

renderItem={({item})=>{
           <Text id={item._id}>{item.title}</Text>
         }}

顺便说一句,
id
不是
的道具之一。如果没有keyExtractor函数,您必须自己附加
属性(而不是
id
)。安全地删除它=)

现在得到“警告:列表中的每个子项都应该有一个唯一的“键”属性”。奇怪的是,keyExtractor={(项,索引)=>{item.key}}现在也给了我这个错误。没有办法使用项的_id字段作为键吗?@JulienFEGER是的,您可以给renderItem={({item})=>{{item.title}}}一个键问题解决了,这个问题解决了;)谢谢你的帮助。是的,我试过了…甚至试过以字符串形式返回,但没有结果:s开始认为这是我获取数据时出现的异步问题。是否尝试在文本组件中添加键?可能您的问题是因为您在数据道具中发送了一个对象,在React本机文档中的FlatList示例中,需要发送一个对象数组来呈现数据:谢谢!!我再也没有错误了!但它仍然不渲染任何内容:/n即使只是尝试渲染项目!,没有打印出来。
renderItem={({item})=>{
           <Text id={item._id}>{item.title}</Text>
         }}
renderItem={({item})=>{
        return <Text id={item._id}>{item.title}</Text>
         }}