以下に、AstroプロジェクトにSlick Carouselを導入し、画像スライダーを実装する手順をまとめます。この手順では、useEffectフックを使用せず、シンプルにスクリプトタグを使用して初期化します。

Astroコンポーネントに組み込む例を提案します。

必要なパッケージのインストール

まず、Slick CarouselとjQueryのパッケージをnpmを使用してインストールします。

npm install slick-carousel jquery

型定義の拡張

Slick Carouselのメソッドを認識させるために、jQueryの型定義を拡張します。プロジェクトのルートにsrc/typesディレクトリを作成し、その中にjquery.dというファイルを作成します。

// src/types/jquery.d
import 'slick-carousel';

declare global {
  interface JQuery<TElement = HTMLElement> {
    slick(options?: any): JQuery;
  }
}

Astroコンポーネントの作成

次に、Astroコンポーネントを作成して、Slick Carouselを設定します。ここでは、画像とタイトルの配列を受け取り、スライダーを表示します。 styleはtailwindであてています。

ImageSlider の作成

---
// src/components/ImageSlider
interface Props {
  titles: string[];
  images: string[];
}
const { titles, images }: Props = Astro.props;
---

<ul class="slick-carousel flex justify-center w-full my-[11vh] ml-[1vw]">
  {images.map((image, index) => (
    <li class="px-[1vw]">
      <img
        class="rounded-[1vw] w-[25vw]"
        src={image}
        alt={titles[index]}
      />
    </li>
  ))}
</ul>

<script>
  import "slick-carousel/slick/slick.css";
  import "slick-carousel/slick/slick-theme.css";
  import $ from "jquery";
  import "slick-carousel/slick/slick.min.js";

  $(() => {
    $(".slick-carousel").slick({
      centerMode: true,
      slidesToShow: 5,
      autoplay: true,
      centerPadding: "",
      arrows: false,
      autoplaySpeed: 0,
      speed: 1200,
      cssEase: "linear",
      responsive: [
        {
          breakpoint: 768,
          settings: {
            slidesToShow: 3,
          },
        },
      ],
    });
  });
</script>

コンポーネントの使用

次に、Astroページ内でコンポーネントを使用します。

index の作成

---
// src/pages/index
import ImageSlider from '../components/ImageSlider';

const titles = ["Title 1", "Title 2", "Title 3", "Title 4", "Title 5"];
const images = [
  "https://via.placeholder.com/600x400?text=Image+1",
  "https://via.placeholder.com/600x400?text=Image+2",
  "https://via.placeholder.com/600x400?text=Image+3",
  "https://via.placeholder.com/600x400?text=Image+4",
  "https://via.placeholder.com/600x400?text=Image+5",
];
---

<ImageSlider titles={titles} images={images} />

まとめ

  1. 必要なパッケージをインストールする。
  2. 型定義を拡張するためのファイル src/types/jquery.d を作成する。
  3. ImageSlider コンポーネントを作成し、Slick Carouselの設定を含める。
  4. index ページを作成し、ImageSlider コンポーネントを使用する。

これで、Slick CarouselがAstroプロジェクト内で正しく動作することを確認できます。npm run devを実行して、ブラウザでスライダーが正しく表示されることを確認してください。