今回は、子コンポーネントをページに並べる際に導入したライブラリ「react-stack-grid」のご紹介です。
現在開発中のシステムで、カードコンポーネントを複数並べるというレイアウトを実装したのですが、このカードコンポーネントの高さにばらつきがあったので、その状態でも綺麗に配置できないか…と調べたところ、「react-stack-grid」ライブラリがヒットしました。
GitHub のページはこちら。
GitHub – tsuyoshiwada/react-stack-grid
https://github.com/tsuyoshiwada/react-stack-grid
上記ページのデモページを見るのが一番わかりやすいですが、こちらのライブラリを使うと、高さにばらつきのあるコンポーネントの上下の余白を詰めて均一にしてくれます。
さて、導入方法ですが、まずライブラリを下記コマンドでインストールします。
npm install react-stack-grid --save
インストールが完了したら、実装したいページにインポートします。
下記は GitHub に掲載されているサンプルコードです。
import React from "react"; import StackGrid from "react-stack-grid"; const ExamplePage = () => { return ( <StackGrid columnWidth={150}> <div key="key1">Item 1</div> <div key="key2">Item 2</div> <div key="key3">Item 3</div> </StackGrid> ); }
プロパティについては GitHub に説明があるので、そちらを参考にしてください。
個人的によく使いそうなのは、columnWidth
、gutterWidth
、gutterHeight
、duration
あたりかと思います。
columnWidth
は表示する子コンポーネントの横幅です。数値で指定するか、文字列で "20%"
のように指定することもできます。
なお、デフォルトは 150
です。
gutterWidth
、gutterHeight
は、それぞれ子コンポーネント間の余白です。デフォルトはどちらも 5
です。
duration
は描画時のアニメーションの描画時間です。デフォルトは 480
で、単位はミリ秒です。
今回のシステムでは、アニメーションはない方が自然かなと思ったので、今回は 0
を指定して、アニメーションなしにしました。
導入した感想ですが、とにかく実装が簡単でした!
デモページを見る感じでは、ブラウザのサイズ変更にも対応していそうでしたし、プロパティもかなり細かく指定できました。
画像を表示するページなどでも使えそうです。
以上、React で Pinterest のようなレイアウトを実装できるライブラリ「react-stack-grid」のご紹介でした。
ご参考になれば幸いです。