如何在Recompose中使用withHandlers向函数组件添加refs并在ScrollView上调用ScrollTo?

Gol*_*Jer 12 javascript react-native recompose

我的具体目标是使用ScrollView 的ScrollTo方法,但维护功能组件结构.

更一般地,这需要获得当前组件的参考,这是裸体反应原生的.

在2016年12月重新组合添加允许withHandlers的处理程序属性是一个工厂函数,但我无法弄清楚如何正确使用它.

如何在Recompose中使用withHandlers向函数组件添加refs并在ScrollView上调用ScrollTo?

小智 21

你可以尝试这样的事情:

/* ... */

const MyView = ({ onRef, children }) => (
    <View>
        <ScrollView ref={onRef} /* ... */>
            {children}
        </ScrollView>
    </View>
)

export default compose(
    withHandlers(() => {
        let myScroll = null;

        return {
            onRef: () => (ref) => (myScroll = ref),
            scrollTo: () => (value) => myScroll.scrollTo(value)
        }
    },
    lifecycle({
        componentDidMount() {
            this.props.scrollTo({ x: 0, y: 100, animated: true })
        }
    })
)(MyView)
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了.谢谢! (3认同)

sim*_*Pod 5

我个人比较喜欢以Ref作为道具

  withProps(() => ({
    ref: React.createRef(),
  })),
Run Code Online (Sandbox Code Playgroud)

然后将其传递给您的无状态组件

const MyComponent = ({ ref }) => <Foo ref={ref} />
Run Code Online (Sandbox Code Playgroud)