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});
},
我正在使用 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});
},