Javascript 在React Native中,如何获取自定义组件的Y偏移量,然后将ScrollView滚动到其位置?
在React Native中,我有一个带有Javascript 在React Native中,如何获取自定义组件的Y偏移量,然后将ScrollView滚动到其位置?,javascript,uiscrollview,react-native,scrollview,Javascript,Uiscrollview,React Native,Scrollview,在React Native中,我有一个带有滚动视图的屏幕: let scrollView; let myComponent2; function onPress() { myComponent2.measure((frameOffsetX, frameOffsetY, width, height, pageOffsetX, pageOffsetY) => { scrollView.scrollTo({ y: frameOffsetY }); } function MyScrol
滚动视图的屏幕:
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
组件时,ScrollView
应该滚动,以便MyComponent2
可见。问题是我不能在自定义组件上使用度量
,只能直接在视图中使用
因此,我的问题是:获取自定义React本机组件的Y偏移量的最佳方法是什么?我最终将组件包装在一个额外的视图中,以便能够获取其偏移量:
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>
);
};
让我们滚动查看;
让myComponent2包装;
函数onPress(){
myComponent2Wrapper.measure((frameOffsetX,frameOffsetY,宽度,高度,pageOffsetX,pageOffsetY)=>{
scrollView.scrollTo({y:frameOffsetY});
}
函数MyScrollView(){
返回(
scrollView=ref}>
myComponent2Wrapper=ref}>
);
};
对于我添加的ref
视图,我没有得到正确的pageOffsetY
位置值。您对此有什么想法吗?请告诉我您的建议。
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>
);
};