首页 > 解决方案 > Animated.FlatList 上的 disableIntervalMomentum 不起作用

问题描述

我正在开发一个应用程序,其中包括一个用于查看其他人故事的水平界面。为了提高性能,我使用了一个 FlatList 并且它工作得很好,除了我可以像提要一样滚动它并且它不会在下一个索引/故事上停止

尝试使用 disableIntervalMomentum 来处理这个问题,这是 FlatList 应该从 ScrollView 继承的道具,但它没有显示任何效果!在博览会上运行:^34.0.1

除了自己编写整个滚动行为之外,我还能做什么?感谢您的帮助!:D

        <Animated.FlatList
                        data={this.state.stories}
                        keyExtractor={this._keyExtractor}
                        renderItem={this._renderSingleStory}
                        style={StyleSheet.absoluteFillObject}
                        horizontal
                        snapToInterval={width}
                        disableIntervalMomentum
                        snapToAlignment={"center"}
                        decelerationRate={0.88}
                        initialScrollIndex={this.props.stories.indexOf(this.props.currentActiveBigStory)}
                        showsHorizontalScrollIndicator={false}
                        getItemLayout={(data, index) => (
                            { length: width, offset: width * index, index }
                        )}
                        onScroll={Animated.event(
                            [
                                {
                                    nativeEvent: {
                                        contentOffset: { x },
                                    },
                                },
                            ],
                            { useNativeDriver: true },
                        )}

                    />

标签: react-native

解决方案


对于每个为此苦苦挣扎的人, pagingEnabled 做到了(感谢青)这是当前的代码:

         <Animated.FlatList 
                            data={this.state.items}
                            keyExtractor={this._keyExtractor}
                            renderItem={this._renderSingleStory}
                            initialScrollIndex={this.props.items.indexOf(this.props.currentActiveBigStory)}
                            showsHorizontalScrollIndicator={false}
                            pagingEnabled
                            horizontal
                            getItemLayout={(data, index) => (
                                { length: width, offset: width * index, index }
                            )}
                            onScroll={Animated.event(
                                [
                                    {
                                        nativeEvent: {
                                            contentOffset: { x },
                                        },
                                    },
                                ],
                                { useNativeDriver: true },
                            )}

                        />

我希望它对你有帮助!:D


推荐阅读