我react-native-reanimated
在我的react-native应用程序上使用。我也在用react-native-redash
。我正在尝试使用一些手势制作模式,所以我有以下代码:
const [ height, setHeight ] = useState(SNAP_TOP);
const [ velocityY, translationY, offset, state ] = useValues(0, 0, height, State.UNDETERMINED);
const gestureHandler = onGestureEvent({
state,
velocityY,
translationY,
});
const springTranslation = withSpring({
state,
offset,
velocity: velocityY,
value: translationY,
config: { damping: 15 },
snapPoints: [ SNAP_BOTTOM, height - HEADER_HEIGHT, height ],
onSnap: () => {
state.setValue(State.UNDETERMINED)
},
});
const translateY = interpolate(springTranslation, {
extrapolate: Extrapolate.CLAMP,
inputRange: [ SNAP_BOTTOM, height ],
outputRange: [ SNAP_BOTTOM, height ],
});
所以,这个手势很好用,但在某些特定时刻我需要显示或隐藏我的模态,所以我声明以下内容:
useCode(() => block([
cond(
eq(state, State.UNDETERMINED),
[
set(
offset,
timing({ clock, from: visible ? height : 0, to: visible ? 0 : height, duration: 400 })
),
],
),
]), [ visible ]);
这就是问题所在,当再次执行onSnap
函数时,我真的不知道为什么会这样,因为我正在使用 deps for prop,这是来自父组件的属性,用于显示或隐藏模态的。我在使用deps 时遇到了很多问题,因为它没有按我的预期工作。有人可以帮助我,o解释一下是否工作得一样好?redash
useCode
visible
useCode
useCode