SHOEISHA iD

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

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

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

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

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

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

データ表示に関するコンポーネント

 次は、データ表示に関するコンポーネントを見ていきます。表2の9種類があります。

表2:データ表示に関するコンポーネント
コンポーネント 概要
Badge ステータスを表現するためのバッジを表示する。
Close Button
閉じるボタンを表示する。
Code ソースコードを表示する。
Divider 区切り線を表示する。
Kbd キーボードのキーを表すUIを表示する。
List ul/li要素のリストを表示する。
Stat 統計情報を表示する。
Table table要素のテーブルを表示する。
Tag タグを表示する。

 TableやListは、ほとんどHTMLのtable要素やul/li要素と同じ内容なので割愛します。それ以外で主要なものを見ていきましょう(リスト4)。

[リスト4]データ表示に関するコンポーネント
// Badge
<HStack spacing="3">
  <Badge>営業中</Badge>
  <Badge colorScheme="green">成約</Badge>
  <Badge colorScheme="red">失注</Badge>
</HStack>

// Kbd
<Box>
  コピーのショートカットは<Kbd>Ctrl</Kbd> + <Kbd>C</Kbd>です。
</Box>

 Badgeはデータ項目に簡単なステータス表記を行いたい場合などに有用なUIです。図4のように状態を表す色付きテキストを付与しておくことで、情報の視認性を上げることができます。

図4:ステータス表記を行う
図4:ステータス表記を行う

 Kbdは少し変わり種で、キーボードショートカットの説明を見やすくするためのコンポーネントです(図5)。

図5:キーボードショートカットを表現する
図5:キーボードショートカットを表現する

 操作マニュアルなどを作る際に重宝するコンポーネントになりそうです。

フィードバックに関するコンポーネント

 続いて、フィードバックに関するコンポーネントを見ていきましょう。表3の6種類があります。

表3:フィードバックに関するコンポーネント
コンポーネント 概要
Alert
お知らせを表示する。
Circular Progress 円状の進捗率UIを表示する。
Progress 棒状の進捗率UIを表示する。
Skeleton 仮置きのUIを表示する。
Spinner
読み込み中のUIを表示する。
Toast ポップアップを表示する。

 特に重宝するのがSkeltonです。画面を表示する際にデータ読み込みで待ち時間が発生するのはよくあることですが、このときに本物のUIと近い形をした仮UIを置いておくことで、ユーザーはまっさらな画面で待たされるよりも少ないストレスで読み込みの完了を待てる傾向があるようです。画像などのコンテンツを置き換えるSkeleton、アイコンなどを置き換えるSkeletonCircle、テキストを置き換えるSkeletonTextなどが用意されています(リスト5)。

[リスト5]Skeleton
<Box p="6" boxShadow="lg" bg="white">
  <SkeletonCircle size="10" />
  <SkeletonText mt="4" noOfLines={4} spacing="4" />
</Box>

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

図6:仮UIを表示できる
図6:仮UIを表示できる

 仮置きしたUIが明滅し、これからそこに何かが表示されそうなことを期待させてくれます。読み込み中に進捗バーを出しておくのもよいですが、コンテンツの種類によってはこういった仮UIを出しておくのもオシャレでいいかもしれません。

オーバーレイに関するコンポーネント

 次はオーバーレイに関するコンポーネントです。画面にすでに表示されているUIの上に、覆いかぶさる形で表示されるUIがこのジャンルです。表4の6種類があります。

表4:ーバーレイに関するコンポーネント
コンポーネント 概要
Alert Dialog
確認ダイアログを表示する。
Drawer サイドメニューを表示する。
Menu コンテキストメニューを表示する。
Modal 画面上にオーバーレイしたモーダル領域を表示する。
Popover 小さい吹き出し型のモーダルを任意の場所に表示する。
Tooltip マウスオーバーで現れるヒントを表示する。

 この中でも特に汎用性が高く、頻出するのはModalです。通常の画面に表示すると冗長になってしまう詳細な情報を表示するときに使えるので、利用シーンは多くあります。Modalの基本的な使い方はリスト6のような形です。

[リスト6]Modal
function ButtonWithModal() {
  const { isOpen, onOpen, onClose } = useDisclosure();
  return (
    <>
      <Button onClick={onOpen}>情報を見る</Button>

      <Modal isOpen={isOpen} onClose={onClose}>
        <ModalOverlay />
        <ModalContent>
          <ModalHeader>詳細情報</ModalHeader>
          <ModalCloseButton />
          <ModalBody>
            じゅげむじゅげむごこうのすりきれ...
          </ModalBody>

          <ModalFooter>
            <Button
              colorScheme="blue"
              mr={3}
              onClick={onClose}
            >
              閉じる
            </Button>
            <Button variant="ghost">おぼえた</Button>
          </ModalFooter>
        </ModalContent>
      </Modal>
    </>
  );
}

 これを実行すると、まずは図7のようにボタンだけが表示されます。

図7:ボタンだけが表示される
図7:ボタンだけが表示される

 これをクリックすると、図8のようにモーダルが表示されます。

図8:モーダルが表示される
図8:モーダルが表示される

 モーダルはコンポーネントのどんなに深い階層に配置しても画面全体に覆いかぶさる形で表示されるため、基本的には表示するボタンの隣に定義しておくとよいでしょう。

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

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

現場で役立つ! 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー