在 react-native-maps 中动画结束后调用函数

Calling function after animation ended in react-native-maps

region: new MapView.AnimatedRegion({
        longitude: 4.70821527747714,
        latitudeDelta: 1.384276459048536,
        latitude: 43.31340937725116,
        longitudeDelta: 2.066803805399701,
      });
....................
....................
this.state.region
    .timing({
      latitude: region.latitude._value,
      longitude: region.longitude._value,
      latitudeDelta: 0.5,
      longitudeDelta: 0.5,
    })
    .start();

this.setState({
  zoomLevel: 8,
  regionUpdated: true,
});

这是我在react-native中使用的

我想在动画结束后调用setState函数。 但是现在,它在动画期间被调用。

我觉得如果动画函数是promise函数就好了。 但我不确定。

我该如何解决这个问题?

timing函数returns一个Animated值实例。 Animated 的 start 方法接受将在动画完成时调用的完成回调。所以你可以这样做:

this.state.region.timing(config).start(() =>
  this.setState({
    zoomLevel: 8,
    regionUpdated: true,
  }),
);

参考文献:

https://facebook.github.io/react-native/docs/animated.html#working-with-animations https://github.com/airbnb/react-native-maps/blob/master/lib/components/AnimatedRegion.js#L140