Javascript 如何在React原生平面列表中加载两个状态,可能吗?
我下面有两个州Javascript 如何在React原生平面列表中加载两个状态,可能吗?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我下面有两个州 state={ title=['abc','def','ghi']; //data for-example. Subheading=['aaa','bbb','ccc']; //data for-example. } 我希望通过FlatList获得以下输出 abc aaa def bbb ghi ccc 我尝试过的代码只能加载标题状态,但如何在文本组件中加载副标题和标题 我的代码与此类似: <FlatList style={{ fl
state={
title=['abc','def','ghi']; //data for-example.
Subheading=['aaa','bbb','ccc']; //data for-example.
}
我希望通过FlatList获得以下输出
abc
aaa
def
bbb
ghi
ccc
我尝试过的代码只能加载标题状态,但如何在文本组件中加载副标题和标题
我的代码与此类似:
<FlatList
style={{ flex: 1, padding: 9 }}
data={Object.assign(this.state.title)}
keyExtractor={(key, index) => key + index}
renderItem={(itemData) => {
return <Card.Title
title={itemData.item}
subtitle={<Text>//how to load subheading</Text>}
onPress={() => console.log("Pressed")}>
/>
}
}
/>
key+index}
renderItem={(itemData)=>{
返回console.log(“按下”)}>
/>
}
}
/>
您可以在renderItem
中访问呈现项的索引
,由于标题
和副标题
的索引之间具有1:1的等价性,因此您可以使用该索引访问所需的数据:
<FlatList
style={{ flex: 1, padding: 9 }}
data={Object.assign(this.state.title)}
keyExtractor={(key, index) => key + index}
renderItem={(itemData) => {
return <Card.Title
title={itemData.item.name}
subtitle={<Text>{this.state.Subheading[itemData.index]}</Text>} /* <- Here */
onPress={() => console.log("Pressed")}>
/>
}
}
/>
key+index}
renderItem={(itemData)=>{
返回
/>
}
}
/>
另外,您应该删除
数据属性中的对象.assign()
,只需传入标题,因为它没有任何作用。我可以想出两种方法
您可以将两个数组合并到和对象数组中(这需要更改数据结构)
renderItem({item,index,separator})代码>函数的签名中有索引,如果您100%确定索引0处的标题在索引0处有子标题,您只需编写此.state.subheading[index]
即可获得子标题值
有几种方法可以做到这一点,但我认为更干净的方法是将数组合并到这种形式的对象[{title:'aaa',subtitle:'abc'}]
const data = title.map( (item,index) => {
return { title: item, subtitle: Subheading[index] }
}
然后在平面列表中,您可以使用item.title
和item.subtitle
从程序员的角度来看,我将始终以结构化和可读的方式组织数据,这样最终,我的渲染代码也将是可读的(而不是多个数组[index])谢谢@Lars。它起作用了