nativescript-vue - 如何使用 nativescript-vue MultiDrawer 实现多帧?
问题描述
我使用的是 RadSideDrawer,但现在我想尝试 multidrawer。
回购自述文件说...
<MultiDrawer>
<StackLayout slot="left">
<Label text="Im in the left drawer" />
</StackLayout>
<Frame /> <!-- main content goes into the default slot -->
</MultiDrawer>
默认插槽是什么?
我的main.ts文件...
Vue.use(MultiDrawer)
new Vue({
store,
render: h => h('frame', [h(App)])
}).$start()
在使用 RadSideDrawer 时,我正在向组件添加菜单并将菜单添加到所有其他视图。
所有 nativescript 市场使用render: h => h('frame', [h(HelloWorld)])
都接受Playing with Shadows。
如果我需要条件导航,如何实现多帧,例如render: h => h("frame", [h(backendService.isLoggedIn() ? routes.home : routes.login)])
- 我应该在哪里添加
<MultiDrawer>
标签? - 我应该在哪里添加主要内容?
- 有没有使用 multidrawer 的演示项目?
解决方案
这取决于您实际需要什么。抽屉本身只不过是一个最多有 5 个插槽的组件:left, right, top, bottom and default
.
Aframe
是一个负责导航的元素,它跟踪它backstack
并且可以导航到不同的页面,并且可以管理backstack
with clearHistory
, backstackVisible
...
您可以根据自己的需要组合这些。如果您需要一个在“注销”页面(这些不需要抽屉)和“登录”页面之间导航的框架,您有多种选择:
- 制作
MultiDrawer
您的根元素,并将单个框架添加到default
插槽。切换是否根据当前位置启用抽屉(这需要nativescript-vue-navigator
跟踪当前“路线”之类的东西)。
render: h => h('frame', [h(App)])
是相同的
<Frame>
<App />
</Frame>
如果我需要更改根元素,我通常将其更改为
render: h => h(App)
并写下组件内部的所有元素App
:
<MultiDrawer :enabled="isLoggedIn">
<!-- left slot left out but would go here -->
<!-- a navigator in the default slot -->
<Navigator :defaultRoute="isLoggedIn ? '/home' : '/login'"/>
</MultiDrawer>
- 使用多个帧,一帧作为根帧,id 类似“authFrame”。在此框架中导航“已注销”身份验证页面和“已登录”主页。在主页上,添加
MultiDrawer
, 和第二个Frame
,因为它是default
插槽中的内容。
<!-- a pseudo code example of the structure, the different pages would be $navigateTo'd and not actually nested as child elements -->
<Frame id="authFrame">
<LoginPage/>
<RegisterPage/>
<MainPage>
<MultiDrawer>
<Frame/> <!-- the frame to navigate "logged in" pages -->
</MultiDrawer>
</MainPage>
</Frame>
推荐阅读
- html - 当使用 CSS 计数器自动编号标题时,应该在哪里使用 counter-reset?
- android - KMM: sqldelight:coroutines-extensions 将 kotlinx-coroutines-core 版本设置为 1.3.9
- javascript - 为什么以这种方式更改此格式化函数会导致 Knockout 绑定开始工作?
- python-3.x - 使用移位的计算在 for 循环中不起作用
- jquery - 为什么我从 ajax 请求中得到未定义的数组
- python - 在 VSCode 中从 conda 环境导入 python 包
- perl - Perl 加载模块 BEGIN
- flutter - 在数据表颤动中添加注释
- java - VLCJ 在流式传输时动态修改帧
- sed - 如何用 sed 替换部分多行字符串