我有一个组件,使用PanResponder创建一个类似操纵杆的控件。我遇到的问题是,如果我绑定到onPanResponderRelease事件,状态就会过时。我相信这是由于使用了泛响应器的useRef。
const panResponder = useRef(
PanResponder.create({
onMoveShouldSetPanResponder: () => true,
onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}]),
onPanResponderRelease: () => {
Animated.spring(
pan,
{
toValue: {
x: 0,
y: 0,
},
useNativeDriver: false,
},
).start();
props.onReleased(); //call the onReleased event so the parent can respond.
},
}),
).current;
父组件
const onReleased = () => {
//implement logic based on current state values
if(someState .... //somestate is always the initial value
}
1条答案
按热度按时间xzlaal3s1#
我想我找到了答案,但我想得到一些社区的反馈。如果我将release事件移到useRef之外,一切都将按预期工作。
父组件
下面是一个工作示例:https://snack.expo.dev/lr5Wz8XwV
我对PanResponder不是很熟悉,所以我想知道这是否会是一个性能问题。