我正在尝试按照这个示例(此处的代码)并在我的 RN 项目中使用LayoutAnimation(与该示例的不同之处在于我只想渲染我的圆圈而不需要按下按钮)。
但是,当我添加了 LayoutAnimation 时,是整个视图/屏幕/组件执行“跳入”动画,而不仅仅是我想要的圆圈。我必须将 LayoutAnimation 移动到哪里才能实现动画的圆形对象?
再次更新:听从bennygenel
了制作一个单独的 Circles 组件然后在收藏夹上的建议,有一个会一个一个地添加每个CriclecomponentDidMount
组件,导致随着时间延迟更新状态时产生单独的动画。但是我仍然没有得到一一渲染/动画的理想效果......
class Circle extends Component {
componentWillMount() {
LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
}
render() {
return (
<View>
{ this.props.children }
</View>
);
}
}
class Favorites extends React.Component {
constructor(props) {
super(props);
this.state = {
circleCount: 0
}
}
componentDidMount() {
for(let i = 0; i <= this.props.screenProps.appstate.length; i++) {
setTimeout(() => {
this.addCircle();
}, (i*500));
}
}
addCircle = () => {
this.setState((prevState) => ({circleCount: prevState.circleCount + 1}));
}
render() {
var favoritesList = this.props.screenProps.appstate;
circles = favoritesList.map((item) => {
return (
<Circle key={item.url} style={styles.testcontainer}>
<TouchableOpacity onPress={() => {
Alert.alert( "Add to cart and checkout?",
item.item_name + "? Yum!",
[
{text: 'Yes', onPress: () => console.log(item.cust_id)},
{text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'}
]
)}}>
<Image source={{uri: item.url}} />
</TouchableOpacity>
</Circle>
)});
return (
<ScrollView}>
<View>
<View>
{circles}
</View>
</View>
</ScrollView>
);
}
}