IonReactRouter не отображает IonPage
Я новичок в структуре ionic-react, и пока мне она нравится. но теперь я столкнулся с проблемой. когда я использую "IonReactRouter", он говорит, что моя страница должна находиться внутри компонента IonPage, несмотря на то, что это так. Я попытался удалить составной div, но все равно ничего. любая помощь приветствуется...
1 ответ
Я столкнулся с той же проблемой, но смог решить ее следующим образом.
Согласно журналу изменений 4.9.0-rc2, IonPage должен быть корневой страницей для Ionic Pages. Кроме того, IonRouterOutlet должен быть прямым родительским компонентом каждой IonPage, как это объясняется в этом комментарии. Простой пример может выглядеть так.
const Home: React.FC = () =>
<IonPage>
<IonHeader>Home</IonHeader>
</IonPage>
const Example: React.FC = () =>
<IonPage>
<IonHeader>Example</IonHeader>
</IonPage>
const App: React.FC = () =>
(
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route path="/" component={Home} />
<Route path="/example" component={Example}/>
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
export default App;
Но обратите внимание, если вы используете вложенные маршруты, как показано в руководстве по реакции-маршрутизатору, div нарушит прямое условие родитель-потомок. Приложение перейдет к компоненту, инициализирует его, но отобразит только пустую страницу.
Поэтому обязательно всегда используйте IonRouterOutlet.
const Home: React.FC = () =>
<IonPage>
<IonHeader>Home</IonHeader>
<IonContent>
<Link to={'/example/simple'}>Simple</Link>
<br/>
<Link to={'/example/advanced'}>Advanced</Link>
</IonContent>
</IonPage>
const Example: React.FC<RouteComponentProps> = (route: RouteComponentProps) =>
<IonRouterOutlet>
<Route path={`${route.match.url}/simple`} component={SimpleExample}/>
<Route path={`${route.match.url}/advanced`} component={AdvancedExample}/>
</IonRouterOutlet>
const SimpleExample: React.FC<RouteComponentProps> = (route: RouteComponentProps) =>
<IonPage>
<IonHeader>Simple</IonHeader>
</IonPage>
const AdvancedExample: React.FC<RouteComponentProps> = (route: RouteComponentProps) =>
<IonPage>
<IonHeader>Advanced</IonHeader>
</IonPage>