React Native Animated with useNativeDriver - _reactNative.Animated.event(...) 不是函数

Jun*_*ark 6 javascript react-native

我想使用本机驱动程序在 React Native 应用程序中处理动画。我正在使用Animated.FlatList,我想onScrollrender函数之外定义。这是代码片段。

class FlatListWithAnimation extends React.PureComponent {
  [...]

  onScroll = (event) => Animated.event(
    [{
      nativeEvent: {
        contentOffset: { y: this.state.scrollY },
      },
    }],
    {
      useNativeDriver: true,
      listener: (event, gestureState) => console.log(event, gestureState),
    },
  )(event);


  render() {
  [...]
    return (
      [...]
      <Animated.FlatList
        key="FlatList"
        data={placeHolderData}
        renderItem={this.renderPlaceHolder}
        onScroll={this.onScroll}
      />
      [...]
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会产生_reactNative.Animated.event(...) is not a function错误。当我Animated.event直接放入inside 时onScroll={...},它就起作用了。但我想知道如何Animated.eventrender函数之外使用。

谢谢。

小智 5

简短的回答:这是不可能的。您只能通过将使用本地驱动程序Animated.eventonScroll处理程序。

PanResponder 尚不支持原生动画,因为它是在纯 JS 中实现的。

你可以这样写,但它会像 useNativeDriver: false

onScroll = (event) => Animated.event(
  [{
    nativeEvent: {
      contentOffset: { y: this.state.scrollY },
    },
  }],
  {
    useNativeDriver: true,
    listener: ({ nativeEvent }) => this.state.scrollY.setValue(nativeEvent.contentOffset.y),
  },
).__getHandler()(event);
Run Code Online (Sandbox Code Playgroud)