Я сделал страницу, на которой я использую FlatList. Этот FlatList использует компонент элемента, который я сделал, который отображает другой вид под собой при нажатии, устанавливая состояние «скрытый» в false. Основная проблема, с которой я столкнулся, заключается в том, что я не могу найти способ изменить «скрытое» состояние на «истинное» при нажатии на один из элементов, поэтому всегда сохраняю только 1 элемент, отображающий дополнительное представление в то время. В то же время, когда я обновляю / перерисовываю свой FlatList, он не устанавливает все «скрытое» состояние обратно в true.
Здесь я отображаю свой FlatList
_onRefresh() {
this.setState({refreshing: true}, () => this._loadList());
}
render() {
return (
<View style={[style.container, style.whiteBackground]}>
<CategoryFilter filterCallback={this._changeCategory}/>
<FlatList
data={this.state.list}
extraData={this.state}
renderItem={({item}) =>
<ListItemComponent item={item} category={this.state.category}/>
}
refreshing={this.state.refreshing}
onRefresh={() => this._onRefresh()}
/>
</View>
);
}
И именно здесь я отображаю и отображаю скрытый вид
constructor(props) {
super(props);
this.state = {
hidden: true
};
}
componentDidMount() {
this.setState({hidden: true});
}
_onPress() {
this.setState({
hidden: !this.state.hidden
});
}
[...]
_renderOS(item) {
if (Platform.OS === 'android') {
return (
<TouchableNativeFeedback onPress={() => this._onPress()}>
{this._renderItem(item)}
</TouchableNativeFeedback>
);
} else if (Platform.OS === 'ios') {
return(
<TouchableOpacity onPress={() => this._onPress()}>
{this._renderItem(item)}
</TouchableOpacity>
);
}
}
[...]
_renderDescription(item) {
if (this.state.hidden === true) {
return null;
} else {
return (
<View style={listItemStyle.descriptionContainer}>
<Text style={listItemStyle.description}>
{item.description}
</Text>
</View>
);
}
}
Я просто хочу иметь возможность иметь только один элемент списка со скрытым значением false на тот момент и сказал, что элемент должен быть установлен как скрытый = true при обновлении страницы, но я не нашел ничего, что могло бы помочь я.