我正在尝试在React-Native中创建一个可扩展的FlatList。当用户按下"TouchableOpacity“组件时,它现在应该显示描述(item.Beschreibung)。我试图做到这一点,方法是将renderItem函数呈现的每一项都添加到一个数组中。它不知何故不起作用,因为"renderItem“中的条件没有被再次检查。我该如何解决这个问题呢?
const clickedItems = []
const [isClicked, setIsClicked] = useState(false)
const addMoreItems = (x) => {
    if (hasBeenClicked(x.Name) == false){
        clickedItems.push(x.Name)
    } else{
        clickedItems.splice(clickedItems.indexOf(x.Name), 1)
    }
  }
const hasBeenClicked = (x) => {
    if (clickedItems.includes(x) == true){
        setIsClicked(true)
    } else {
        setIsClicked(false)
    }
    return isClicked
}
const renderItem =({item, index})=>{
    if (hasBeenClicked(item.Name) == false){
        return (
            <TouchableOpacity onPress={addMoreItems(item)}><Text>{item.Name}</Text></TouchableOpacity>
        )
    } else {
        return (
            <TouchableOpacity onPress={addMoreItems(item)}>
                <Text>{item.Name}</Text>
                <Text>{item.Beschreibung}</Text>
            </TouchableOpacity>
        )
    }
}
return (
    <View style={styles.container}>
        <Text style={{fontSize:18}}>Informationen zur Übung: {kurse[kursIndex].Uebungen[uebungsIndex].Name}</Text>
        <Text></Text>
        <Text style={{textAlign:"justify"}}>{kurse[kursIndex].Uebungen[uebungsIndex].Info}</Text>
        <FlatList  
            data={kurse[kursIndex].Uebungen[uebungsIndex].KognitiveProzesse}
            keyExtractor={item=>item.id}
            renderItem={renderItem}
        ></FlatList>
    </View>
)发布于 2021-02-07 16:04:21
仅当React组件的属性或状态发生更改时才会重新呈现这些组件。
只有在kurse[kursIndex].Uebungen[uebungsIndex].KognitiveProzesse发生更改时,才会重新计算renderItem函数。
我建议在子组件中移动isExpanded状态。创建一个CognitiveProcessListItem组件(如果我正确理解您的代码的话是?),并在里面添加[isExpanded, setIsExpanded] = React.useState(false)。
https://stackoverflow.com/questions/66084151
复制相似问题