1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【React】React Slickで詰まったとこ

Last updated at Posted at 2023-03-13

やりたいこと

  • next.js、react-slickを使ってカルーセルを表示
    reactslick.gif

インストール

パッケージ
npm install react-slick --save
CSS
npm install slick-carousel

実装

コンポーネント
import React from 'react';
import Slider from "react-slick";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
import Image from 'next/image'

export default function Carousel() {
  const settings = {
    dots: true,
    autoplay: true,
    infinite: true,
    speed: 1000,
  };

  const images = [
    {
      id: 1,
      src: "/images/ファイル名.jpg",
      alt: "Image 1"
    },
    {
      id: 2,
      src: "/images/ファイル名.jpg",
      alt: "Image 2"
    },
    {
      id: 3,
      src: "/images/ファイル名.jpg",
      alt: "Image 3"
    }
  ];

   const imageStyle = {
     width: '100%'
   };
  
  return (
    <Slider {...settings}>
      {images.map((image) => (
        <div key={image.id}>
          <Image 
            src={image.src}
            alt={image.alt}
            width={500}
            height={500}
            style={imageStyle}
          />
        </div>
      ))}
    </Slider>
  );
}
使用側
import Carousel from 'パス'

export default function Home() {
  return (
    <div>
      <Carousel />
    </div>
  );
}

間違えたポイント
<前提>

  • Next.js使用
  • 画像の保存先:public/images/**.jpg

パスは「public」以下から指定する。
相対パスの場合はimageの先頭に「/」を付ける

const images = [
    {
      id: 1,
-     src: "public/images/ファイル名.jpg",
+     src: "/images/ファイル名.jpg",
      alt: "Image 1"
    }
  ];

間違えたポイント

  • コンポーネントはwidthとheightを指定する必要がある。
  • 100%にしたい場合は、別でスタイルを用意してやって、style={}としてあててやる。
const imageStyle = {
    width: '100%'
  };
  
<Image 
  src={image.src}
  alt={image.alt}
  width={500}
  height={500}
  style={imageStyle}
/>

エラー

  • モジュールの宣言ファイルが見つかりません ~は暗黙的に'any'型になります。
    プロジェクト作成時、TypeScriptを選択するとなるっぽい。

具体的な内容はキャプチャし忘れ。。。

import Slider from "react-slick";

importにエラーの内容に記載されていたため、それ通りにコマンド実行

npm i --save-dev @types/react-slick

参考文献

  • 導入方法、よく使うコマンドが学べる。

  • コマンドが豊富

  • 公式っぽいが分かりにくい

バージョン

  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@next/font": "13.2.3",
    "@types/node": "18.14.6",
    "@types/react": "18.0.28",
    "@types/react-dom": "18.0.11",
    "next": "13.2.3",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-slick": "^0.29.0",
    "slick-carousel": "^1.8.1",
    "typescript": "4.9.5"
  },
  "devDependencies": {
    "@types/react-slick": "^0.23.10",
    "@types/slick-carousel": "^1.6.37",
    "autoprefixer": "^10.4.13",
    "postcss": "^8.4.21",
    "tailwindcss": "^3.2.7"
  }
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?