小编And*_*ans的帖子

useAnimatedGestureHandler onStart 方法正确的上下文参数类型

TL;DR 有谁有任何例子, useAnimatedGestureHandler 的正确泛型是什么?

问题:

我正在关注Reanimated 2 手势动画教程有这样一个例子:

//...
const onGestureEvent = 
useAnimatedGestureHandler({
  onStart: (_, ctx) => {
    ctx.offsetX = translateX.value
  },
  //...
})
//...
Run Code Online (Sandbox Code Playgroud)

我使用打字稿,当我复制打字稿中的示例时,我得到ctx参数(上下文)类型错误: Property 'offset' does not exist on type '{}'.在 onStart 声明中进行一些窥探后,我发现 GestureHandlers 的完整类型需要一个泛型<T, TContext extends Context>

//...
export interface GestureHandlers<T, TContext extends Context> {
  onStart?: Handler<T, TContext>;
  //...
}
Run Code Online (Sandbox Code Playgroud)

解决方法:

我可以通过简单地传递一个实用程序类型记录(这几乎与说“任何”相同)来解决这个问题,我不喜欢这样。

const onGestureEvent = useAnimatedGestureHandler<
    GestureEvent<PanGestureHandlerEventPayload>,
    Record<string, unknown>
>({
    onStart: (_, ctx) => {
    ctx.offsetX = translateX.value;
    }, …
Run Code Online (Sandbox Code Playgroud)

generics typescript react-native react-native-reanimated react-native-gesture-handler

6
推荐指数
1
解决办法
2796
查看次数