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。它起作用了