react-slick の代替:何を作ったかで移行先を決める

react-slick は jQuery 時代の slick カルーセルを React に移植したものです。今も動作しますが、アーキテクチャはフック以前のもので、リリースはまばらで、ビルドのたびに別の CSS ファイルを引きずり込みます。適切な代替は機能よりも、あなたの使い方が 2 つの陣営のどちらに属するかで決まります。

react-slickEmblaSwiperreact-horizontal-scrolling-menu
それは何かjQuery slick の React 移植版ヘッドレスカルーセルエンジンフル装備のスライダーフレームワークスクロールメニュー、ネイティブスクロール
メンテナンス状況まばら活発活発2018 年から活発
バンドルサイズ(min+gzip)≈15 kB + slick CSS≈8 kB≈40 kB≈5.7 kB
追加の CSS ファイルが必要かはい(2 つ)いいえはい(コア)1 つ、または shadcn アイテム経由の Tailwind
スライドのセマンティクス(スナップ、ドット、フェード)ありありありなし — 意図的に
クリック可能なアイテムの行centerMode で無理やり実現エンジンの上に自作本来の用途に逆らって設定中心となるユースケース

サイズはおおよそのコアサイズです。最後の列はこのサイト自身のライブラリです — 表はそれを隠さずそのまま示しています。

陣営 1:本物のカルーセルだった場合

ヒーロースライダー、画像ギャラリー、証言のローテーション — slick のドット、フェード、オートプレイがデザインを支えていたものすべて。本物のカルーセルエンジンへ移行しましょう:

slidesToShow/slidesToScroll を Embla の slidesInView/slidesToScroll や Swiper の slidesPerView/slidesPerGroup にマッピングし、矢印位置調整用の CSS 上書きは削除することになるでしょう — どちらの後継ライブラリも、自分のボタンをレンダリングできます。

陣営 2:centerMode をまとったナビゲーションだった場合

もう一つの slick の使われ方は、目立たない方です:カテゴリー、ロゴ、日付、フィルターの行を、slick がすでにバンドルに入っていたという理由だけで centerModefocusOnSelectvariableWidth を使ってカルーセルに無理やり押し込んだものです。その兆候は、あなたが何と格闘してきたかに表れます:ドラッグの後にクリックが発火する、矢印が変なタイミングで出る、計測できないアイテム、望んでいなかったスナップ。

その行はメニューだったのです。react-horizontal-scrolling-menu は、centerMode が偽装していた 3 つのこと — クリックされたアイテムを中央に置くドラッグ対応 でネイティブにスクロールする、どのアイテムが見えているかを報告する — を、スライダーエンジンなしの ≈5.7 kB で行います。この 2 つの最も一般的な形については スクロール可能なタブカテゴリーレール のページをご覧ください。

どちらの陣営でも:移行は見た目より小さい

slick の API 表面積は大きく見えますが、実際の設定を監査するとすぐに小さくなります:ほとんどのプロジェクトは一握りの props しか使っていません。実際に設定しているものを書き出し、それぞれの使い方がどちらの陣営に属するかを判断し、インスタンスごとに移行しましょう — 2 つの陣営が同じコードベースに共存することはよくあり、両方が同じライブラリに着地しなければならない決まりはありません。