【发布时间】:2019-02-13 04:19:40
【问题描述】:
上下文:
我正在使用“expo”处理“react-native”,我有一个倒置的“FlatList”,它在其中呈现从 1 月到 12 月的月份“数组”。
请求:
在向用户显示列表之前,列表应聚焦在当前月份。
现状:
我正在使用“FlatList”“scrollToOffset”属性来执行此请求,当接收到“数据源”列表时,会自动触发“this.flatList.scrollToOffset”语句,列表会为滚动设置动画并聚焦特定项目.但是我有一个问题,这个动画是一个突然的动作,破坏了用户体验。
需要:
你能帮我找到解决这个问题的方法吗?我需要做同样的事情,但用户看不到滚动运动,他只应该看到项目集中。 有什么想法吗?
演示代码:
平面列表
<FlatList
ref={ref => (this.flatList = ref)}
inverted
data={foods}
keyExtractor={this.keyExtractor}
renderItem={this.renderItem}
/>
聚焦项目的功能
handlePosition(id) {
/* Item Size from FlatList */
const itemSize = deviceWidth / 2 + 30;
/* Id of the current month */
const idCurrentItem = id;
this.flatList.scrollToOffset({
animated: true,
offset: itemSize * idCurrentItem,
});
}
声明handlePosition函数在哪里调用
componentDidMount() {
this.handlePosition(this.props.months[2].id);
}
【问题讨论】:
-
在scrollToOffset中设置
animated: false -
@ShashinBhayani 谢谢你的评论。我已经用过这种方式,但是这更突然,这就是我发布我的问题的原因。
-
我不知道如何避免动画,但是,您可以在动画发生时放置一个 ActivityIndicator(加载警报)以“隐藏”并锁定用户的交互,直到当月设置。
-
@MtgKhaJeskai 谢谢你的评论。是的,这就是我现在正在做的事情,是我想到的第一个解决方案。除了我想使用“FlatList”或“ScrollView”属性来解决这个请求。
-
试试我的回答。
标签: javascript reactjs listview react-native scrollview