React Native - 动画值的 getTranslateTransform() 在 Android 虚拟设备上出错

React Native - getTranslateTransform() of Animated Value make error on Android virtual device

我正在使用 react-native 实现可拖动组件。 这个组件在我的 IOS 设备上运行良好。 但是,当我在虚拟 android 设备上测试此组件时,它会出现如下错误:

更新 属性 'transform' 管理的视图时出错:RCTView

translateX 的值无法从 String 转换为 Double

下面是我的代码

export default class DraggableTouchableOpacity extends Component {
  constructor (props) {
    super(props);
  }

  componentWillMount() {
    this.pan = new Animated.ValueXY();
    this.panResponder = PanResponder.create({
      onMoveShouldSetPanResponder: () => true,
      onPanResponderGrant: (e, gestureState) => {
        this.pan.setOffset({x: this.pan.x, y: this.pan.y});
      },
      onPanResponderMove: (e, gestureState) => {
        this.pan.setValue({x: gestureState.dx, y: gestureState.dy});
      },
      onPanResponderRelease: (e) => {
        Animated.spring(this.pan, {
          toValue: {x: 0, y: 0},
          friction: 5
        }).start();
      }
    });
  }

  render() {
    return (
        <Animated.View
          style = {{
            transform: this.pan.getTranslateTransform()
          }}
          {...this.panResponder.panHandlers}
        >
          <TouchableOpacity {...this.props} ref = {view => { this.myComponent = view; }}/>
        </Animated.View>
    );
  }
}

onPanResponderGrand 中的 setOffset 导致错误

更改该功能

onPanResponderGrant: (e, gestureState) => {
    this.pan.setOffset({x: this.pan.x, y: this.pan.y});
},

onPanResponderGrant: (e, gestureState) => {
   this.pan.setValue({x: 0, y: 0});
},