Tabs
Tabs
は、異なる表示領域を切り替えるコンポーネントです。
インポート
import { Tabs, TabList, Tab, TabPanels, TabPanel } from "@yamada-ui/react"
Tabs
: 子要素(TabList
,TabPanels
)を制御するラッパーコンポーネントです。TabList
: 子要素(Tab
)を制御するラッパーコンポーネントです。Tab
: パネルのラベルとして機能し、そのパネルを表示するボタンのコンポーネントです。TabPanels
: 子要素(TabPanel
)を制御するラッパーコンポーネントです。TabPanel
: ラベルに関連付けられたコンテンツを表示するコンポーネントです。
TabList
とTabPanels
は、省略することができます。
使い方
Tab
とTabPanel
は、必ずペアになる必要があります。内部的に、同じインデックスのものが紐づけられます。
編集可能な例
<Tabs> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
バリアントを変更する
編集可能な例
<VStack> <Tabs variant="line"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="sticky"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="sticky-subtle"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="sticky-solid"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="rounded"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="rounded-subtle"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="rounded-solid"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs variant="unstyled"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> </VStack>
サイズを変更する
編集可能な例
<VStack> <Tabs size="sm"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs size="md"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs size="lg"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> </VStack>
カラースキーマを変更する
編集可能な例
<VStack> <Tabs variant="rounded-solid" colorScheme="red"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel> <Text>クリリンのことか……クリリンのことかーーーっ!!!!!</Text> </TabPanel> <TabPanel> <Text>へっ!きたねぇ花火だ</Text> </TabPanel> <TabPanel> <Text> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </Text> </TabPanel> </Tabs> <Tabs variant="sticky-solid" colorScheme="purple"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> </VStack>
デフォルトの項目を選択する
デフォルトの項目を選択する場合は、defaultIndex
に項目のindex
を設定します。
編集可能な例
<Tabs defaultIndex={1}> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
配置を変更する
align
にstart
, center
, end
を設定することで、タブの配置を変更できます。
編集可能な例
<VStack> <Tabs align="start"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs align="center"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs align="end"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> </VStack>
方向を変更する
orientation
にhorizontal
またはvertical
を設定することで、タブの方向を変更できます。
編集可能な例
<VStack> <Tabs orientation="horizontal"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> <Tabs orientation="vertical"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> </VStack>
コンテナ幅まで引き伸ばす
isFitted
をtrue
にすることで、タブをコンテナ幅まで均等に引き伸ばします。
編集可能な例
<Tabs variant="sticky" isFitted> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
無効にする
特定のタブを無効にしたい場合は、isDisabled
を設定します。
編集可能な例
<Tabs> <Tab>孫悟空</Tab> <Tab isDisabled>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
アクティブをマニュアル化する
デフォルトでは、フォーカスされたタブは自動的にアクティブ化されます。任意のタイミング(Enter
やSpace
が押されたとき)でタブをアクティブ化したい場合は、isManual
をtrue
に設定します。
編集可能な例
<Tabs isManual> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
遅延レンダリング
デフォルトでは、すべてのパネルはアクティブに関わらずDOMにレンダリングされます。つまり、非表示のパネルもレンダリングされているが、スタイルによって非表示になっていることになります。
タブがアクティブになるまで、各パネルのレンダリングを遅延させたい場合は、isLazy
をtrue
に設定します。
編集可能な例
<Tabs isLazy lazyBehavior="unmount"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
TabList
を使う
Tab
は、children
にTabList
が存在しない場合、自動的にchildren
内のTab
をTabList
でラッピングします。TabList
をカスタマイズしたい場合は、children
にTabList
を設定します。
編集可能な例
<Tabs> <TabList borderWidth={1}> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> </TabList> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs>
TabPanels
を使う
Tab
は、children
にTabPanels
が存在しない場合、自動的にchildren
内のTabPanel
をTabPanels
でラッピングします。TabPanels
をカスタマイズしたい場合は、children
にTabPanels
を設定します。
編集可能な例
<Tabs variant="sticky"> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanels borderBottomWidth={1} borderLeftWidth={1} borderRightWidth={1}> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </TabPanels> </Tabs>
制御する
編集可能な例
const [index, onChange] = useState<number>(0) return ( <Tabs index={index} onChange={onChange}> <Tab>孫悟空</Tab> <Tab>ベジータ</Tab> <Tab>フリーザ</Tab> <TabPanel>クリリンのことか……クリリンのことかーーーっ!!!!!</TabPanel> <TabPanel>へっ!きたねぇ花火だ</TabPanel> <TabPanel> 私の戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく…… </TabPanel> </Tabs> )
GitHubでこのページを編集する