Как я могу сделать 1 индекс за один раз в плоский список - реагировать родной - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь отобразить список видео, но каждый элемент видео действует как страница, так как я использую pagingenabled в flatlist. Проблема в том, что я использую 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 }}
          />

1 Ответ

1 голос
/ 19 марта 2020

Вы не можете использовать любые компоненты с сохранением состояния внутри FlatList. FlatList не сохраняет экземпляры компонентов при повторном рендеринге, а это означает, что все видимые экземпляры VideoPlayer будут размонтироваться и повторно монтироваться каждый раз, когда происходит рендеринг. Вместо этого используйте ScrollView, который не виртуализирует свои элементы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...