我有一个像这样的ScrollView:
<ScrollView>
{this.state.businessMerchants.map(merchant => (
<Business
merchant={merchant}
key={merchant.id}
/>
))}
</ScrollView>
通常其中包含2-4个项目。
我想突出显示当前的最高项目,并使其占用更多空间(也许再增加10%?)。滚动列表时,此“顶部项目”将切换。
是否有更标准化的方法来执行此操作,还是我必须做一些诸如使用scrollEventThrottle
和自定义函数之类的事情?
下面的伪代码:
if((findHeightOfItem + padding) * multiple === itemPos) {
addSizeHere()
}
对于在React Native中执行此操作的最佳/最有效方式是非常好奇的。
答案 0 :(得分:0)
步骤:
itemHeight
的高度scrolledHeight
Math.floor(scrolledHeight / itemHeight)
我建议您使用带有缩放比例的动画视图
handleScroll = (e) => {
const currentHeight = e.nativeEvent.contentOffset.y;
const currentItemIndex = Math.floor(currentHeight / 100);
this.setState({ currentItemIndex });
}
<ScrollView onScroll>
{this.state.businessMerchants.map((merchant, index) => (
<Business
merchant={merchant}
isCurrentItem={index === this.state.currentItemIndex}
key={merchant.id}
/>
))}
</ScrollView>