【发布时间】:2021-12-31 12:29:49
【问题描述】:
我有一个项目列表,当它们被刷过某个阈值时应该改变状态。我正在使用 runOnJs 调用函数来更改状态。现在,当我第一次滑动一个项目时,它会更新它的状态,但之后的每次滑动都不会执行任何操作。有人可以向我解释一下我在这里缺少什么吗?
let [cleaned, setCleaned] = useState(false);
let handleCleanPress = () => {
console.log(clean);
setCleaned(!cleaned);
translateX.value = withTiming(0);
};
let panGesture = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({
onStart: (_, context) => {
context.startX = translateX.value;
},
onActive: (event, context) => {
let start = context.startX + event.translationX;
if (start < 0) {
translateX.value = start;
}
},
onEnd: () => {
let shouldTriggerClean = translateX.value < translateXThreshold;
translateX.value =
translateX.value >= snapThreshold && translateX.value < -BUTTON_WIDTH
? withTiming(snapPoint, { duration: 200 })
: withTiming(0, { duration: 200 });
if (shouldTriggerClean) {
runOnJS(handleCleanPress)();
}
},
});
【问题讨论】:
标签: react-native react-native-reanimated-v2