大家好,如何在react native中制作一个自定义的动画可折叠组件?尝试了几个文档,但没有工作。任何人都可以提供一个有用的文档。请帮助。
已更新
constructor(props){
super(props);
this.icons = {
'up' : require('../Images/Arrowhead.png'),
'down' : require('../Images/Arrowhead-Down.png')
};
this.state = {
title : props.title,
expanded : false,
animation : new Animated.Value(),
details: []
};
}
toggle(){
let initialValue = this.state.expanded? this.state.maxHeight + this.state.minHeight : this.state.minHeight,
finalValue = this.state.expanded? this.state.minHeight : this.state.maxHeight + this.state.minHeight;
this.setState({
expanded : !this.state.expanded
});
this.state.animation.setValue(initialValue);
Animated.spring(
this.state.animation,
{
toValue: finalValue
}
).start();
}
_setMaxHeight(event){
this.setState({
maxHeight : event.nativeEvent.layout.height
});
}
_setMinHeight(event){
this.setState({
minHeight : event.nativeEvent.layout.height
});
}
componentWillMount(){
fetch('https://www.mywebsite.com' )
.then((response) => response.json())
.then((responseData) =>
this.setState({
details:responseData
})
);
}
showDetailsFunction(){
let icon = this.icons['down'];
if(this.state.expanded){
icon = this.icons['up'];
}
return this.state.details.map(detail =>
<ScrollView>
{detail.data.curriculum.map(curr =>
<Animated.View
style={[styles.container,{height: this.state.animation}]}>
{curr.type == 'section'? (
<View onLayout={this._setMinHeight.bind(this)}>
<Card>
<CardSection>
<TouchableHighlight onPress={this.toggle.bind(this)} underlayColor="#f1f1f1">
<Image style={styles.buttonImage} source={icon}></Image>
</TouchableHighlight>
<View style={styles.thumbnailContainerStyle}>
<Text style={styles.userStyle1}>
{curr.title}
</Text>
</View>
</CardSection>
</Card>
</View>
): (<Text></Text>)}
<View style={styles.body} onLayout={this._setMaxHeight.bind(this)}>
{this.props.children}
<Text>hiii</Text>
</View>
</Animated.View>
)}
</ScrollView>
);
}
render(){
return(
<View>
{this.showDetailsFunction()}
</View>
);
}
我已经这样做了i'm following this doc。我面临的问题是单击影响所有的折叠组件。此外,卡的大小只是增加没有展开或显示文本。如以下
第一次
1条答案
按热度按时间e0bqpujr1#
我最近刚刚发布了一个这样的组件。react-native-collapsible-view。看看吧!
NPM
Github
Live demo on Snack