在React Native中,我有一个ScrollView
的屏幕:
let scrollView;
let myComponent2;
function onPress() {
myComponent2.measure((frameOffsetX, frameOffsetY, width, height, pageOffsetX, pageOffsetY) => {
scrollView.scrollTo({ y: frameOffsetY });
}
function MyScrollView() {
return (
<ScrollView ref={ref => scrollView = ref}>
<MyButton onPress={onPress} />
<MyComponent1 />
<MyComponent2 ref={ref => myComponent2 = ref} />
<MyComponent3 />
</ScrollView>
);
};
MyButton
的定义如下:
function MyButton(props) {
return (
<TouchableHighlight onPress={props.onPress}>
<Text>Press Me</Text>
</TouchableHighlight>
);
}
我想要完成的是,当用户按下MyButton
组件时,ScrollView
应滚动,以便MyComponent2
可见。问题是我无法在自定义组件上使用measure
,只能直接在View
中使用。
所以我的问题是:获取自定义React Native组件的Y偏移量的最佳方法是什么?
答案 0 :(得分:3)
我最终将我的组件包裹在一个额外的View
周围,以便能够得到它的偏移量:
let scrollView;
let myComponent2Wrapper;
function onPress() {
myComponent2Wrapper.measure((frameOffsetX, frameOffsetY, width, height, pageOffsetX, pageOffsetY) => {
scrollView.scrollTo({ y: frameOffsetY });
}
function MyScrollView() {
return (
<ScrollView ref={ref => scrollView = ref}>
<MyButton onPress={onPress} />
<MyComponent1 />
<View ref={ref => myComponent2Wrapper = ref}>
<MyComponent2 />
</View>
<MyComponent3 />
</ScrollView>
);
};