【发布时间】:2023-04-03 00:05:01
【问题描述】:
大家好,我又来了。我想为从 JSON 响应的结果创建的每个组件创建一个特定的事件。
我已经使用 .map 创建了每个组件,我可以从结果中创建 折叠标题。如果 JSON 的结果是 3,它会创建 3 个不同的标题,但我的问题是内部组件,每次我按下 TouchableWithoutFeedBack 时,它都会根据最后一次 Collapse Header 单击呈现所有 Collapse Body,但是我只需要渲染与单击的标题相关的折叠正文。
我有一个功能组件,它有一个请求来检索类别并填充折叠标题,然后单击标题我需要根据标题类别填充自定义组件。
我该如何解决这个问题? 如果有人可以帮助我,我将不胜感激。
{auditCategory.map(r =>(
<Collapse>
<CollapseHeader key={r.id} >
<TouchableWithoutFeedback onPress={()=> {
// console.log("TESTE:"+r.id)
axios.get("http://10.113.16.113:8081/api/audititem/findbycategorycheckl?checklistid="+checklistid+"&categoryid="+r.id,{
}).then
(function (response){
setAuditItems(response.data);
// console.log(response.data);
}).catch(error => {
console.log(error);
})
}}>
<View style={styles.collapHead}>
<Text style={styles.collapHeadInput} >{r.categorY_DESCRIPTION} </Text>
</View>
</TouchableWithoutFeedback>
</CollapseHeader>
<CollapseBody>
<ScrollView horizontal={true}>
{auditItems.map(r =>(
<AuditItem key={r.id} title={r.subcategorY_DESCRIPTION} od={r.od}></AuditItem>
))}
</ScrollView>
</CollapseBody>
</Collapse>
))}
这是来自 axios.get 的响应:
[
{
"id": 3,
"subcategorY_DESCRIPTION": " Test 1 SubCategory",
"checklisT_ID": 1,
"auditcategorY_ID": 2,
"od": 300,
"creatioN_DATETIME": "2020-03-06T00:00:00",
"status": true,
"locatioN_ID": 1,
"shoW_SCANCODE": true,
"shoW_CAPTUREPHOTO": true,
"shoW_COMMENTS": true
},
{
"id": 9,
"subcategorY_DESCRIPTION": "Test 2",
"checklisT_ID": 1,
"auditcategorY_ID": 2,
"od": 10,
"creatioN_DATETIME": "2020-04-06T00:00:00",
"status": true,
"locatioN_ID": 1,
"shoW_SCANCODE": true,
"shoW_CAPTUREPHOTO": true,
"shoW_COMMENTS": true
}
]
【问题讨论】:
-
使 auditItems 成为一个对象,其键为外部元素的 id。然后你可以做
auditItems[key].map -
请您提供一些更详细的信息来说明我该怎么做?我仍然从 React 开始。
-
希望我能理解您的问题。我将尝试在答案中详细说明。见下文
标签: javascript reactjs react-native collapse