我想使用scrollTo
的{{1}}方法滚动到所按的元素。
ScrollView
中的每个孩子都有ScrollView
,并且使用ref
道具触发了该指标,状态为onLayout
就足以正确触发滚动。
但offsetY
上this.componentRef.measure
返回的值始终为0,因此它始终滚动到ScrollView的开头。
在子组件的代码下面
frameOffsetY
父组件是ScrollView
measureOffset() {
this.componentRef.measure(
(frameOffsetX, frameOffsetY, width, height, pageOffsetX, pageOffsetY) => {
console.log(frameOffsetX, frameOffsetY, width, height, pageOffsetX, pageOffsetY);
this.setState({ offsetY: frameOffsetY });
}
);
}
render() {
return (
<View
ref={ref => this.componentRef = ref}
style={{ opacity: 1, flex: 1 }}
onLayout={() => this.measureOffset()}
>
...
</View>
);
}
我不确定我是否遗漏了某些内容,或者这是React Native的错误。
提前感谢您的帮助。
答案 0 :(得分:0)
请注意,在本机完成渲染之后,这些测量才可用。如果您需要尽快进行测量,请考虑使用onLayout道具。
请参阅here
初始化时会调用onLayout,此处的调用测量将无法获得实际测量值。
有一个onLayout函数的参数,像这样使用
onLayout={(e)=>{
let obj = e.nativeEvent.layout;
console.log(obj.width);
console.log(obj.height);
}