Я пытаюсь воспроизвести анимацию индивидуально item.id
в flatlist
. Пока я могу связать идентификатор и предупредить правильный, когда я нажимаю анимацию. К сожалению анимация не воспроизводится и я получаю эту ошибку Undefined is not an object (evaluating 'singleValue.stopTracking')
.
anim_star = (id) => {
Alert.alert(id);
this.setState({ progress: new Animated.Value(id) });
Animated.timing(this.state.progress[id], {
toValue: 1,
duration: 2000,
easing: Easing.linear,
}).start();
}
Собирает идентификатор и должен воспроизводить анимацию, для которой когда-либо был выбран идентификатор.
data={ this.state.dataSource}
ItemSeparatorComponent = {this.FlatListItemSeparator}
renderItem={({item}) => <View>
<Card>
<View rkCardFooter>
<TouchableOpacity
onPress={this.anim_star.bind(this, item.id)}
style={{position:'absolute', height: '100%', width: '100%',}}>
<Animation
progress={this.state.progress[item.id]}
source={require('../Animations/favourite_app_icon.json')}
style={{ height: '100%', width: '100%', position: 'absolute'}}
resizeMode="contain"
/>
</TouchableOpacity>
<Text> Sample</Text>
</View>
</Card>
Отображение анимации для любого количества категорий.
И, наконец, вот как выглядят мои реквизиты и состояния:
constructor(props)
{
super(props);
this.state = {
isLoading: true,
id: '',
dataSource: '',
progress: new Animated.Value(0),
};
Я проверил другие источники и до сих пор не знаю, почему происходит эта ошибка или что я делаю неправильно. Я подумал, может быть, если я поменяю progress
на id, то это приведет к тому, что анимация будет проигрываться индивидуально, но это было далеко не правильно.