SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現場で役立つ! React向けライブラリ詳説

React向けUIライブラリ「Chakra UI」で、より複雑なアプリケーションを作る際に必要なコントロール用のUI【後編】

現場で役立つ! React向けライブラリ詳説 第8回

データの表示・非表示切り替えに関するコンポーネント

 次はデータの表示・非表示を切り替えるコンポーネントです。表5の3種類があります。

表5:データの表示・非表示切り替えに関するコンポーネント
コンポーネント 概要
Accordion
アコーディオンUIを表示する。
Tabs タブ切り替えを表示する。
Visually Hidden 見た目上は見えないコンテンツを配置する。

 ここでは、Tabsを紹介しておきましょう。TabsはTabs、Tab、TabList、TabPanels、TabPanelというコンポーネントの組み合わせでできており、リスト7のように使用します。

[リスト7]Tabs
<Tabs>
  <TabList>{/* (1) */}
    <Tab>その1</Tab>
    <Tab>その2</Tab>
    <Tab>その3</Tab>{/* (3) */}
  </TabList>

  <TabPanels>{/* (2) */}
    <TabPanel>
      <p>その1!</p>
    </TabPanel>
    <TabPanel>
      <p>その2!</p>
    </TabPanel>
    <TabPanel>{/* (4) */}
      <p>その3!</p>
    </TabPanel>
  </TabPanels>
</Tabs>

 使い方には少しクセがあり、(1)のTabList内の要素数と(2)のTabPanels内の要素数を合わせておく必要があります。要素の順序が同じもの同士の動きが同期されるので、(3)のTabを選択すると、(4)のTabPanelが表示されることになります。実際に表示すると、図9のようになります。

図9:タブでコンテンツを表示する
図9:タブでコンテンツを表示する

ナビゲーションに関するコンポーネント

 次はナビゲーションに関するコンポーネントです。リンクに関するものがこのジャンルです。表6の3種類があります。

表6:ナビゲーションに関するコンポーネント
コンポーネント 概要
Breadcrumb パンくずリストを表示する。
Link リンクを表示する。
LinkOverlay
Box内のリンクのクリックイベントをBoxに付与する。

 これらの中で面白いのは、Breadcrumbコンポーネントです。階層が深めのWebサイトで、現在地を知らせるために画面上部に配置される、パンくずリストが利用できます(リスト8)。

[リスト8]Breadcrumb
<Breadcrumb>
  <BreadcrumbItem>
    <BreadcrumbLink href="#">トップページ</BreadcrumbLink>
  </BreadcrumbItem>

  <BreadcrumbItem>
    <BreadcrumbLink href="#">記事一覧</BreadcrumbLink>
  </BreadcrumbItem>

  <BreadcrumbItem isCurrentPage>
    <BreadcrumbLink href="#">Chakra UIについて</BreadcrumbLink>
  </BreadcrumbItem>
</Breadcrumb>

 リスト8を実行すると、図10のようになります。

図10:パンくずリスト
図10:パンくずリスト

 href部分にリンク先のパスを入れておけば、各ページへのリンクになります。また、<Breadcrumb separator=">">のようにseparator属性を指定することで、任意の記号を表示することもできます。

図11:パンくずリストの記号を変える
図11:パンくずリストの記号を変える

 オシャレなリンクを簡単に置けるので、これもまた重宝しそうなコンポーネントですね。

便利なHooks

 最後に、Hooksについて解説します。表7の12種類の関数が提供されています。

表7:ナビゲーションに関するコンポーネント
関数名 概要
useBoolean true/falseの切り替えを管理する。
useBreakpointValue
レスポンシブ状態に応じて任意の値を返す。
useClipboard クリップボードを簡易に扱う。
useConst 初回表示時にメモ化した値を保持し続ける。
useControllable Chakra UI内部で制御・非制御モードの状態管理を行う。
useDisclosure ModalやDrawerの開閉管理を行う。
useMediaQuery CSSのmedia query表現を判定してbooleanを返す。
useMergeRefs
refを利用するHooksが複数あった場合にrefをマージする。
useOutsideClick
refで指定した領域の外側でのクリックを検出する。
usePrefersReducedMotion
media queryのprefers-reduced-motion設定を読み出す。
useTheme
テーマオブジェクトを読み出す。
useToken テーマ内の特定の設定内容を読み出す。

 筆者が特に便利だと感じているのは、すでにModalの項でも利用したuseDisclosureです。モーダルやダイアログの開閉管理に特化しています(リスト9)。

[リスト9]useDisclosure
const { isOpen, onOpen, onClose, onToggle } = useDisclosure();

 useDisclosureの戻り値から取り出した各種変数のうち、isOpenが開閉状態で、他は状態変更のための関数です。onOpen()を呼び出すと表示、onClose()を呼び出すと非表示、onToggle()を呼び出すと現在とは逆の状態になります。

 この関数はモーダルやダイアログを利用する際に高確率で必要になるので、自作しなくて済むのは大変助かります。

まとめ

 3回にわたってChakra UIについて解説してきました。Chakra UIは、ブラウザにおけるアプリケーション開発で必要なものを全て詰め込む意気込みを感じる、パワフルなライブラリです。皆さんも新しいプロジェクトを始める際には、選択肢のひとつとして選んで見てはいかがでしょうか。

 次回はドラッグ&ドロップのライブラリである、react-dropzoneについて解説します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
現場で役立つ! React向けライブラリ詳説連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15472 2022/01/26 11:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー