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

Ego*_*r T 3 ios reactjs react-native react-native-ios 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,
});
Run Code Online (Sandbox Code Playgroud)

这就是我在react-native中使用的。

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

我认为如果动画功能是Promise功能会很棒。但我不确定。

我怎么解决这个问题?

小智 5

timing函数返回一个Animated值实例。Animated的start方法接受动画完成时将调用的完成回调。因此,您可以这样做:

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

参考:

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