2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【React、ChakuraUI】とりあえずそういうことかとなるVstck、Hstack

Posted at

🏗 はじめに

Reactでタスク管理アプリを作る際に、
ChakraUIのstackを使ってUIがすぐ整えられて感動を覚えたので共有したく記事にしました。

Chakra UI を使うとレイアウトを簡単に構築できます。
特に VStackHStack を使うことで、要素を縦・横に直感的に配置できます。

本記事では VStackHStack の違いを、実際のコードと画像で比較しながら見ていきます。

(細かい説明は省略します!仕組みや詳細気になることは公式ドキュメントや他記事を参考にしていただけたらと思います)


📌 コード例

以下のコードの StackVStack にした場合と HStack にした場合のレイアウトを比較してみます。

1. VStack の場合(縦並び)

<VStack spacing={4} align="stretch">
  <Button colorScheme="blue">ボタン1</Button>
  <Button colorScheme="red">ボタン2</Button>
  <Button colorScheme="green">ボタン3</Button>
</VStack>

image.png

2. HStack の場合(横並び)

<HStack spacing={4}>
  <Button colorScheme="blue">ボタン1</Button>
  <Button colorScheme="red">ボタン2</Button>
  <Button colorScheme="green">ボタン3</Button>
</HStack>

image.png


🔍 VStack あり vs なし の比較

僕が作成中のタスク管理アプリにて途中段階ですが
Vstackありなし違いを見ていきましょう。

1. VStack あり

<VStack spacing={4} align="stretch" p={4}>
  <h1 data-testid="title">タスク管理アプリ</h1>
  <Button onClick={openAddModal}>タスクを登録する<IoAddCircleSharp /></Button>
  <TableContainer>
    <Table variant="simple" data-testid="table">
      <TableCaption>タスクリスト</TableCaption>
      <Thead>
        <Tr>
          <Th>タスク名</Th>
          <Th>かかる見込時間</Th>
        </Tr>
      </Thead>
      <Tbody>
        {todos.map((todo) => (
          <Tr key={todo.id}>
            <Td>{todo.title}</Td>
            <Td>{todo.time}</Td>
          </Tr>
        ))}
      </Tbody>
    </Table>
  </TableContainer>
</VStack>

image.png

2. VStack なし(フラット配置)

<div style={{ padding: "16px" }}>
  <h1 data-testid="title">タスク管理アプリ</h1>
  <Button onClick={openAddModal}>タスクを登録する<IoAddCircleSharp /></Button>
  <TableContainer>
    <Table variant="simple" data-testid="table">
      <TableCaption>タスクリスト</TableCaption>
      <Thead>
        <Tr>
          <Th>タスク名</Th>
          <Th>かかる見込時間</Th>
        </Tr>
      </Thead>
      <Tbody>
        {todos.map((todo) => (
          <Tr key={todo.id}>
            <Td>{todo.title}</Td>
            <Td>{todo.time}</Td>
          </Tr>
        ))}
      </Tbody>
    </Table>
  </TableContainer>
</div>

image.png

この例だと小さな差ですが、
子要素全体をVstackで囲うだけで要素感覚や幅を良い感じにしてくれます。


💡 違いを体感しよう

  • VStack あり → 縦方向に統一感のあるレイアウト
  • VStack なし → 要素がバラバラに配置される可能性
  • spacing を調整することで、間隔を簡単に設定可能

実際にコードを書いて動かしてみると、理解が深まるはず!


🎯 まとめ

Chakra UI の VStackHStack を使えば、
要素を に並べるか に並べるかをシンプルに制御できます。

また、実際のアプリで VStack を使うことで、
レイアウトが整理され、デザインの統一感 も得られます。

ぜひ、自分のプロジェクトで試してみてください!🔥

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?