【发布时间】:2021-07-19 10:32:55
【问题描述】:
我尝试了不同的方式来创建带有选项卡的嵌套路由,想法如下:
- WelcomePage->LoginPage->HomePage(Tab)->RecipePage
问题在于首页的入口动画和离开的情况,在 Welcomepage 到 LoginPage 的情况下,如果它工作,也是从食谱页倒退到首页。
我知道问题在于 IonrouterOutlet 和 Route,因为它们是有组织的,但是我已经将我想到的组合做了我自己,并使用了几种方法来渲染路由中的组件,就像渲染一样,组件,也作为子项。如果有人做了类似的事情并得到了最佳结果,或者可能发生了一些被忽视的事情,我会很感激帮助,谢谢。
这是我的app.tsx(总结一下,我除了/signup还有更多的路由,大概50个路由):
<IonApp>
<IonReactRouter>
<IonContent> // This Content only makes sense here because, the white space
// which replaces the animation turns black, blank looks better.
<IonRouterOutlet>
<Route path="/home"> //La ruta de las tabs
<Home />
</Route>
<Route path="/signUp" exact>
<SignUp />
</Route>
</IonRouterOutlet>
</IonContent>
</IonReactRouter>
</IonApp>
My Home.tsx(共 4 条路线):
<IonTabs>
<IonRouterOutlet>
<Route path="/home/search" exact>
<Search />
</Route>
<Route path="/home/explore" exact>
<Explore />
</Route>
<Redirect exact path="/home" to="/home/search" />
</IonRouterOutlet>
<IonTabBar slot="bottom" className="py-1">
<IonTabButton tab="search" href="/home/search">
<IonIcon icon={searchOutline} />
<IonLabel>{textos["page_buscar"]}</IonLabel>
</IonTabButton>
<IonTabButton tab="explore" href="/home/explore">
<IonIcon icon={navigateOutline} />
<IonLabel>{textos["page_explorar"]}</IonLabel>
</IonTabButton>
</IonTabBar>
</IonTabs>
- 更多图形示例,用于欣赏白屏,这应该是动画,这是在 Android 上。
- 在 iPhone 上,PageRecipesList(/recipes) 到 PageRecipe(/recipe) 的动画(无标签):
- 在 iphone 上,PageHomeSearch(Tab home/search) 的动画到 PageRecipesList(/recipes):
- 如果您删除上面评论的内容,将如下所示:
谢谢!
编辑
我想做的一样,但只有一个文件:
app.tsx:
const App: React.FC = () => (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route exact path="/login">
<Login />
</Route>
<IonTabs>
<IonRouterOutlet>
<Route exact path="/tab1">
<Tab1 />
</Route>
<Route exact path="/tab2">
<Tab2 />
</Route>
<Route path="/tab3">
<Tab3 />
</Route>
<Route exact path="/">
<Redirect to="/tab1" />
</Route>
</IonRouterOutlet>
<IonTabBar slot="bottom">
<IonTabButton tab="tab1" href="/tab1">
<IonIcon icon={triangle} />
<IonLabel>Tab 1</IonLabel>
</IonTabButton>
<IonTabButton tab="tab2" href="/tab2">
<IonIcon icon={ellipse} />
<IonLabel>Tab 2</IonLabel>
</IonTabButton>
<IonTabButton tab="tab3" href="/tab3">
<IonIcon icon={square} />
<IonLabel>Tab 3</IonLabel>
</IonTabButton>
</IonTabBar>
</IonTabs>
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
想法是这样做:login->tab1,tab1->login。
【问题讨论】:
-
那些
IonTabButton组件,他们是否应该渲染某种Link组件并使用to道具而不是锚标记的href?您用react-router和react-router-dom标记了这个问题,并且这些都没有使用href属性。 -
Ionic 导航使用 react-router-dom 工作,这些组件来自基于上述库的 Ionic 框架,这就是为什么带有该标签的标签,主题密切相关。
-
我完全理解并意识到这一事实,但我说他们使用带有
to属性的Link组件,而不是带有href属性的锚标签或按钮。你在哪里应用路线过渡动画?到目前为止,对我来说,您的 sn-p 中没有任何内容暗示react-router或react-router-dom存在问题。也许Animated Transitions 示例中的某些内容可以提供帮助。 -
动画是离子框架的默认设置,通过 IonReactRouter 和 IonRouterOutlet 组件,我的问题是动画部分工作,在某些路线上他们没有。我不想添加任何新动画,无论如何,谢谢。
-
好的,知道了。然后删除不相关的标签。
标签: reactjs ionic-framework ionic-react