页面导航(nav)一直都是项目开发的诟病,虽然交互逻辑相对于其他部分更为简单,但是实现起来却不那么容易就能够搞定。
这个导航逻辑要实现以下几个目的:
基本构建结构:
注:page, nav, footer等其他组件都是app.vue的子集, 他们都在app.vue里面
首先搞定nav正常的交互逻辑,即点击nav,指标(active状态)给到相对应的nav项。
这个很容易解决,正常开发即可。我们主要是要讲一讲目的2和目的3(文章开头中提到的)
nav:
router-view或page定义一个props.nav2方法,用于发送上文中提到的current变量,这个nav2方法可以在router-view中的所有page里使用。
至此就可以实现文章开头的那几个目的了,如果看不懂,下面是手稿和代码段:
nav.vue
const props = defineProps({
current: String
})
watchEffect(() => {
navName.value = props.current
})
page.vue
const props = defineProps({
nav2: Function
})
props.nav2('goods?id=' + cid)
app.vue
<navApp :data="pageData" :current="nav_current"></navApp>
<router-view :nav2="e => { nav_current = e }"></router-view>
<footApp :data="pageData"></footApp>
手稿截图:
每一个字都认识,组合起来就一个词也不认识。但是,看到最后看笑了:手稿果然都是不能细看的~