PUROGU LADESU

ポエムがメインのブログです。

【ReactNative】リストをスワイプさせる(2)

今度はライブラリを使ってみます。

react-native-swiper

github.com

こちらも使い方は簡単。表示対象のリストを作ってSwiperタグで囲むだけです。いい感じですね。
このパッケージを使う利点は、

  • ドットで何枚目を表示しているかがわかる。
  • 左右の移動ボタンが出せる。
  • アイテムの都度読み込みができる。
  • ループや自動再生の制御、スタイル変更などその他いろいろ。

逆に足りないのが、

  • ドットを押してページ移動できない

もしかしたらできるのかも。ドットの部分のコンポーネントを自作すればできるのかも。

ハマりポイントとしては、Swiperタグの配下のコンポーネントは閉じタグをつけること。<Image />とか省略したらうエラーになります。あとロード中なども含めてリストの長さが0でSwiperタグの中が空になる場合はエラーになるので、nullの場合は表示しないようにします。

<View
    style={{
      flex: 1,
      justifyContent: 'center',
    }}
  >
    {item.image_uri && (
      <Swiper
        style={{
          height: Window.width,
        }}
        loop={false}
        showsButtons={true}
        dotColor="rgba(255,255,255,0.2)"
        activeDotColor="rgba(255,255,255,0.8)"
        nextButton={
          <Text
            style={{ color: 'rgba(255,255,255,0.8)', fontSize: 48 }}
          >
            ›
          </Text>
        }
        prevButton={
          <Text
            style={{ color: 'rgba(255,255,255,0.8)', fontSize: 48 }}
          >
            ‹
          </Text>
        }
      >
        {item.image_uri?.map((v, i) => {
          return (
            <Image
              key={i.toString()}
              source={{ uri: item.image_uri?.[i] }}
              style={{
                height: Window.width,
                width: Window.width,
                resizeMode: 'contain',
              }}
            ></Image>
          );
        })}
      </Swiper>
    )}
  </View>

react-native-web-swiper

こちらも試しましたがなぜか何も表示されなかった。 こちらはドットを押すとページ遷移するようです。

github.com