Javascript 我必须在item.property的平面列表intead的renderItem中使用item.item.property

Javascript 我必须在item.property的平面列表intead的renderItem中使用item.item.property,javascript,react-native,jsx,react-native-flatlist,Javascript,React Native,Jsx,React Native Flatlist,我有这个密码 <FlatList data={this.state.music_genres} extraData={this.state} renderItem={(genre) => ( <ListItem> <CheckBox onPress={this.onGenreChange.bind(this, item.item, genre.item.id)}

我有这个密码

<FlatList
    data={this.state.music_genres}
    extraData={this.state}
    renderItem={(genre) => (
        <ListItem>
            <CheckBox
                onPress={this.onGenreChange.bind(this, item.item, genre.item.id)}
                checked={this.eventHasGenre(item.item, genre.item.id) > -1 ? true : false} />
            <Body>
                <Text>{genre.item.name}</Text>
            </Body>
        </ListItem>
    )}
/>
我试着用

...
<Text>{genre.name}</Text>
...
这就是这类音乐的价值所在

[{…}]
0: {id: 7, name: "Swing", plural: null, language: "it", genre_type: "music"}
length: 1
为什么我不能使用“genre.id”?

您不能使用
({genre})
,因为这是一个对象解构。在此参数中,将出现一个对象(通过react传递),该对象具有一个属性
item
,如下所示:

obj : { item: {...}}
因此,当您试图从此
obj
获取
genre
时,您只会得到未定义,因为此对象参数中没有genre

只需执行
renderItem={({item})=>(
并使用
item.id
,您就会很好。

您不能使用
({genre})
,因为这是一个对象的解构。在这个参数中,将出现一个带有属性
item
的对象(通过react传递),如下所示:

obj : { item: {...}}
因此,当您试图从此
obj
获取
genre
时,您只会得到未定义,因为此对象参数中没有genre


只需执行
renderItem={({item})=>(
并使用
item.id
,您就会很好。

好的,谢谢解释。列表中的列表如何?我会有2个“item”变量。我在列表中看不到此列表。但我认为您可以更改“item”的名称参数列表中的变量。如果我在父列表中更改名称,我会遇到嵌套列表的相同问题。或者我遗漏了什么?它们都是平面列表类型?是的,它们是相同的平面列表类型。好的,谢谢解释。列表中的列表如何?我会有2个“项”变量。我在列表中看不到此列表。但我认为您可以更改paren列表中“item”变量的名称。如果我在父列表中更改名称,我会遇到嵌套列表的相同问题。或者我遗漏了什么?它们都是平面列表类型?是的,它们属于相同的平面列表类型。
obj : { item: {...}}