我正在尝试呈现视频列表,但是每个视频项都充当页面,因为我在平面列表中使用了pageenabled。问题是我使用windowSize = {2},这导致2个视频(一个可见和另一个不可见)在同一位置渲染。我的状态已暂停,我猜这两个视频都正在加载。由于该exoplayer播放失败。
任何解决方案如何解决?这是我的Flatlist和VideoPlayer组件代码:
<FlatList
data={this.state.data.product}
index={0}
vertical
initialNumToRender = {1}
maxToRenderPerBatch = {1}
windowSize={2}
pagingEnabled = {true}
removeClippedSubviews = {true}
renderItem={({ item, index}) => (
<View style = {{alignContent: 'stretch'}} >
{console.log(index)}
<VideoPlayer
ref={ref => {this.video = ref}}
source={{ uri: item.urlVid }}
rate={1.0}
volume={1.0}
paused
bufferConfig={{
minBufferMs: 15000,
maxBufferMs: 50000,
bufferForPlaybackMs: 2500,
bufferForPlaybackAfterRebufferMs: 5000
}}
disableControlsAutoHide
isMuted={false}
poster = {item.urlImg}
posterResizeMode = "contain"
resizeMode="cover"
disableFullscreen
disableSeekbar
disableVolume
disableTimer
disableBack
style={{ width: width, height: height }}
/>
您不能在FlatList中使用任何有状态的组件。 FlatList不会在重新渲染时保留组件实例,这意味着您所有可见的VideoPlayer实例将在每次渲染时都卸载并重新装载。使用ScrollView而不是不虚拟化其项目