我有一个模式,用户可以从中 Select 类别,然后将该类别加载到他们个人资料页面上的平面列表中. Select 第一个类别后,它会正确加载所需的格式:
当用户从模式中 Select 并添加第二项时,这些项将消失,如下所示:
And when a third item is added, this error is prompted:
CODE:
用户从中 Select 的类别数组,以及钩子状态:
const [catData, setCatData] = React.useState([])
const [catsSelected, setCatsSelected] = React.useState([])
const categoryData=[
{
id: 1,
name: "CatOne",
},
{
id: 2,
name: "CatTwo",
},
{
id: 3,
name: "CatThree",
}]
用户 Select 所需类别后调用的函数:
const onSelectCategory = (itemSelected, index) => {
let newData = categories.map(item => {
if (item.id === itemSelected.id) {
return {
...item,
selected: !item.selected
}
}
return {
...item,
selected: item.selected
}
})
selectedData = newData.filter(item => item.selected === true)
setCatData(selectedData)
}
// Note, the above code is as such due to initially wanting the user to be able to select multiple categories at a time, however,
// I've decided that one category at a time would suffice, and I just modified the above function to fit that need (I will tidy it up later).
用户确认所选类别后调用的函数:
const catSave = () => {
if(catData.length > 0){
if(catsSelected.length < 1){
setCatsSelected(catData)
}
else{
testData = catsSelected
testData = testData.push(catData[0])
setCatsSelected(testData)
}
}
setModalVisible(!modalVisible)
}
以及所选类别加载到的平面列表:
<FlatList
data={catsSelected}
horizontal
showsHorizontalScrollIndicator={false}
keyExtractor={item => `${item.id}`}
renderItem={renderCats}
/>
以下是修改时 Select 的CATS的控制台日志(log),以供参考:
[] // when it is initialized
[{"id": 1, "name": "CatOne", "selected": true}] // first item added
[{"id": 1, "name": "CatOne", "selected": true}, {"id": 2, "name": "CatTwo", "selected": true}] // second item added, the FlatList is now invisible
// Error prompts after third item is added.
我需要的是平面列表不可见,并且在添加第三项后不提示此错误,有人确定为什么会发生这种情况吗?
谢谢你的帮助.