0
我很難搞清楚爲什麼我無法爲卡片組添加一個簡單的動畫。每次按下按鈕時,我都想爲單張卡片製作動畫。我可以在一張卡片上實現此功能,但在第二次渲染後,動畫不再適用。我正在使用setState來跟蹤按鈕按壓和一點邏輯,以將Animated.View應用到列表中下一個卡上。所以在我看來,當應用程序第一次運行卡組中的所有卡都顯示時,用戶按下按鈕,第一張卡被刪除等等等等。React Native通過地圖動態添加動畫
export default class Cards extends React.Component {
componentWillMount() {
this.animatedValue = new Animated.ValueXY(0, 0);
}
state = { index: 0 };
renderCards =() => {
console.log("App started");
const { data } = this.props;
return data.map((cards, idx) => {
if (idx < this.state.index) {
return null;
}
if (idx === this.state.index) {
console.log("animated being added to " + idx);
console.log(` the state is ${this.state.index} in renderCards `);
return (
<View>
<Animated.View style={[this.animatedValue.getLayout()]}>
<Card>
<Text>Animated Value</Text>
</Card>
</Animated.View>
</View>
);
}
return (
<View>
<Card>
<Text>No Animation</Text>
</Card>
</View>
);
});
};
nextCard =() => {
Animated.spring(this.animatedValue, {
toValue: { x: 500, y: 0 }
}).start();
this.setState({ index: this.state.index + 1 });
};
render() {
return (
<View style={styles.cardContainer}>
{this.renderCards()}
<Button
large
icon={{ name: "envira", type: "font-awesome" }}
title="Press me"
style={styles.button}
onPress={() => this.nextCard()}
/>
</View>
);
}
}
第二次呈現兩張牌消失,但我不明白爲什麼會發生這種情況。
我不確定我做錯了什麼。
謝謝。
嗨格雷格,謝謝你花時間。我沒有意識到我必須重新設置值。這非常有幫助,我非常感謝幫助。 – o6t9o