У меня есть компонент, в котором я отображаю списки на основе данных из базы данных. Чтобы список работал, я использую Object.entries
и помещаю все списки в массив. И позже рендеринг массива внутри метода возврата.
Внутри списка у меня есть вид и кнопка. Вид скрыт по умолчанию. Я использую LayoutAnimation
, чтобы расширить список, чтобы отобразить вид по щелчку кнопки. Но когда я нажимаю кнопку, все виды отображаются.
Есть ли лучший способ свернуть и отобразить вид, связанный с конкретным списком. Я только хочу отобразить вид, который я нажимаю на кнопку.
Функция свертывания и отображения вида,
changeLayout = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
this.setState({ expanded: !this.state.expanded });
}
А в методе рендеринга я перемещаю списки в массив,
var lists = [];
Object.entries(this.state.values).forEach(([key, val]) =>
lists.push(
<View>
<List key={val["val1"]} style={styles.list}>
<ListItem>
<Body style={{ paddingLeft: 50, paddingRight: 50 }}>
<Text>{val["name"]}</Text>
</Body>
<Right>
<TouchableOpacity
style={styles.button}
onPress = {this.changeLayout}
>
<Text style={styles.btnText}>Status</Text></TouchableOpacity>
</Right>
</ListItem>
<View style={{ height: this.state.expanded ? null : 0, overflow: 'hidden' }}>
<Text style={styles.text}>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's
</Text>
</View>
</List>
</View>
)
И в методе возврата я называю массив как
<Content>
{lists}
</Content>