【解決方法】Ionic6系のIonTabsで色々エラーが発生したのでその時の対処について
2021年1月22日

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
IonTabs系で色々エラーが発生したため解決のための手順をメモしました。
環境
Mac 11.1
Ionic 6.12.3
よく発生するエラー
logError: IonTabs must contain an IonRouterOutlet
IonTabの利用する上での仕様
色々触ってみて条件にマッチしないとエラーが発生するようでした。
IonRouterOutlet
の外にIonTabs
を入れる必要があるIonTabs
内にIconTabBar
が必須IonRouterOutlet
は入れ子にできる
これを踏まえてやりたいことをやるためには
exactは path
に対して完全一致の必要。 /tab3
は Tab3
のコンポーネントを表示しその他は Index
コンポーネントを表示
App.tsximport Index from 'Index.tsx';
import Tabs3 from 'Tab3.tsx';
const App: React.FC = () => (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route path='/' component={Index} />
<Route path='/tab3' component={Tab3} exact={true} />
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
Index
コンポーネント内で更に IonRouterOutlet
と IonTabBar
を記述。
IonRouterOutlet
内で更にルーティングの設定。
Index.tsximport Tabs1 from 'Tab1.tsx';
import Tabs2 from 'Tab2.tsx';
const Index: React.FC = () => (
<IonTabs>
<IonRouterOutlet>
<Route path='/tab1' component={Tab1} exact={true} />
<Route path='/tab2' component={Tab2} exact={true} />
</IonRouterOutlet>
<IonTabBar slot='bottom'>
<IonTabButton tab='Tab1' href='/Tab1'>
<IonLabel>Tab1</IonLabel>
</IonTabButton>
<IonTabButton tab='Tab2' href='/Tab2'>
<IonLabel>Tab2</IonLabel>
</IonTabButton>
<IonTabButton tab='Tab3' href='/Tab3'>
<IonLabel>Tab3</IonLabel>
</IonTabButton>
</IonTabBar>
</IonTabs>
);
Tab1
- Tab3
のコンポーネント
Tab{n}.tsxconst Tab{n}: React.FC = () => (
<React.Fragment>>
Tab{n}
</React.Fragment>>
);
記事Article
もっと見る- article
NestJSでバリデーションエラーをログ出力する設定を紹介
- article
NestJSで作成したAPIのレスポンスヘッダーに付与されるx-powered-by: Express を消す方法を紹介
- article
Next.jsで環境変数に別の変数を利用し柔軟に管理するdotenv-expandの活用法を紹介
- article
【2025年3月版】Cursor ProとAPI利用比較。 Claude・GPT-4o・o1・GPT-4.5の損益分岐点と選び方
- article
フォーム入力情報からZodを利用してDTO作成しへ変換処理を実施するやり方を紹介
- article
Zodバリデーションのエラーメッセージを日本語化すやり方を紹介