Javascript 在React Native中,如何获取自定义组件的Y偏移量,然后将ScrollView滚动到其位置?

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

在React Native中,我有一个带有
滚动视图的屏幕:

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>
  );
};