我遇到了完全相同的问题,这就是我找到您的问题的原因。经过大量测试,我找到了一种解决方法,似乎可行。在呈现列表后,我没有使用initialScrollIndex,而是使用了函数scrollToIndex。将它应用到您的代码中,它看起来像
import React, { Component } from 'react';
import { FlatList, Dimensions, View, Text } from 'react-native';
const WIDTH = Dimensions.get('window').width;
const HEIGHT = Dimensions.get('window').height;
export default class App extends Component {
render() {
const data = [{id: 0},{id: 1},{id: 2},{id: 3},{id: 4}];
return (
<View onLayout={() => this.onLayout()}>
<FlatList
ref={el => this.list = el}
data={data}
renderItem={this.renderItem}
keyExtractor={item => item.id}
pagingEnabled={true}
horizontal={true}
showsHorizontalScrollIndicator={false}
getItemLayout={this.getItemLayout}
debug={true}
/>
</View>
)
}
onLayout() {
this.list.scrollToIndex({index: 2})
}
renderItem = ({ item }) => {
return (
<View style={{flex: 1, backgroundColor: 'lightblue', width: WIDTH, height: HEIGHT, justifyContent: 'center', alignItems: 'center'}}>
<Text style={{color: 'white', fontSize: 300, fontWeight: 'bold'}}>{item.id}</Text>
</View>
);
};
getItemLayout = (data, index) => (
{length: WIDTH, offset: WIDTH * index, index}
);
}
希望它对你有用。
顺便说一句,将this.list.scrollToIndex({index: 2}) 放在componentDidMount 中,出于某种原因对我不起作用,这就是我改用onLayout 的原因