Как запретить map() отображать весь массив сразу в react-native

#javascript #arrays #function #react-native #react-native-video

#javascript #массивы #функция #react-native #react-native-видео

Вопрос:

Привет, ребята, я использую viewPager и внутри viewpager я визуализирую массив видео с помощью map. Но я хочу показывать 1 видео за один раз, поскольку я даю высоту и ширину 100%. Но когда я запускаю приложение, начинают воспроизводиться все видео.На экране отображается только одно изображение и звук других воспроизводимых видео. Я хочу предотвратить это. Как я могу это сделать?

Вот мой код.

 <ViewPager
        onPageSelected={(e) => {
          setActive(e.nativeEvent.position);
          // setPaused(true);
        }}
        orientation="vertical"
        style={{height: '100%'}}
        initialPage={0}>
        {vids.map((item,index) => {
          return (
            <View key={index}>
              <Video
               paused={item.paused}
                source={{uri: item.vid}}
                style={styles.mediaPlayer}
                volume={0.5}
                resizeMode="cover"
                repeat={true}
                
                onReadyForDisplay={() => SetVideoLoad(false)}
              /></ViewPager
  

Ответ №1:

Вы можете просто сделать это следующим образом

 const [pause,setPause]= useState(true)

               <Video
               paused={pause}
                source={{uri: item.vid}}
                style={styles.mediaPlayer}
                volume={0.5}
                resizeMode="cover"
                repeat={true}
                onTouchStart={()=>{setPause(!pause)} //<=== Add this line
                onReadyForDisplay={() => SetVideoLoad(false)}
              />
  

Я надеюсь, что это поможет вам.Счастливого кодирования: D

Ответ №2:

Проблема в том, как вы используете карту.

 vids.map((item,index) => {
      return (
        <View key={index}>
                    ....
         <View /> ) ..
  

будет выполнять итерацию по всем элементам карты и отображать их соответствующие видео. Что вам нужно, так это создать что-то вроде переменной состояния, которая будет содержать информацию только для одного видео с карты и просто передавать ее информацию компоненту < Video />. Вам понадобятся другие компоненты react, такие как кнопка, для перехода к другому элементу карты для воспроизведения другого видео. Каждый раз, когда вы нажимаете на эту «кнопку», вы будете выполнять некоторый код, чтобы получить другой элемент карты и воспроизвести соответствующее видео.