【发布时间】:2020-06-27 02:14:53
【问题描述】:
我动态添加/删除元素,当添加的元素不在视口中时,我想通过滚动到添加的元素将其放入视口。
但是我无法让它工作。我使用measure 函数获取坐标,然后使用scrollTo 函数滚动到元素。
这是带有滚动视图的父组件
const scrollTo = (config) => {
scrollElRef.current.scrollTo(config);
};
return (
<ScrollView style={styles.container} ref={scrollElRef}>
<Text style={styles.paragraph}>
aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto
beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia
voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni
dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.
</Text>
<Card>
{items.map((i) => <AssetExample key={i} scrollTo={(c) => scrollTo(c)}/>)}
</Card>
</ScrollView>
);
}
这是添加/删除元素并将坐标发送到父视图的子组件
React.useEffect(() => {
if(asset) {
elRef.current.measure((x, y, w, h, pageX, pageY) => {
const elementBottom = pageY + h;
const isInViewport = elementBottom < height;
if (!isInViewport) {
scrollTo({y: pageY, animated: true});
}
});
}
}, [asset, scrollTo, height])
这是一个示例应用程序,它显示了问题。
【问题讨论】:
标签: javascript react-native scrollview