我如何一次在平面列表中呈现1个索引-反应本机

问题描述 投票:0回答:1

我正在尝试呈现视频列表,但是每个视频项都充当页面,因为我在平面列表中使用了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 }}
          />
react-native react-native-flatlist exoplayer react-native-video
1个回答
0
投票

您不能在FlatList中使用任何有状态的组件。 FlatList不会在重新渲染时保留组件实例,这意味着您所有可见的VideoPlayer实例将在每次渲染时都卸载并重新装载。使用ScrollView而不是不虚拟化其项目

© www.soinside.com 2019 - 2024. All rights reserved.