Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)


Posted in Javascript onNovember 05, 2020

Nuxt嵌套路由官网上的API详解:点击链接

看了官网上的api实现了官网的案例你会发现访问父页面中只能显示父页面中的内容,要想默认的在<nuxt-child>区域显示一个页面内容怎么办?

Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)

Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)

自己案例代码:

pages/parent.vue

<template>
 <div>
 <h2>父组件的页面的内容</h2>
 <ul>
 <!-- 进行切换子页面,写法同vue.js -->
 <li><nuxt-link to='/parent/child'>child</nuxt-link></li>
 <li><nuxt-link to='/parent/child2'>child2</nuxt-link></li>
 </ul>
 <hr>
 <div class="box">
 <p>嵌套子页面内容区</p>
 <!-- <nuxt-child>标签在父页面组件中相当于是子页面组件的占位符;嵌套中这个不可少 -->
 <nuxt-child keep-alive :foobar="123"></nuxt-child>
 </div>
 </div>
</template>
<script>
export default {
 
}
</script>
<style scoped>
.box{
 margin-top: 20px;
 padding: 20px;
 border: 2px solid pink;
 border-radius: 5px;
}
</style>

pages/parent/index.vue

<template>
 <div>
 <h2>嵌套子组件中的默认页面index.vue</h2>
 </div>
</template>
<script>
export default {
 
}
</script>
<style scoped>
 
</style>

pages/parent/child.vue

<template>
 <div>
 <h2>嵌套子组件中的页面child</h2>
 <p>foobar:{{foobar}}</p>
 </div>
</template>
<script>
export default {
 props:['foobar']
}
</script>
<style scoped>
 
</style>

pages/parent/child2.vue

<template>
 <div>
 <h2>嵌套子组件中的页面child2</h2>
 <p>foobar:{{foobar}}</p>
 </div>
</template>
<script>
export default {
 props: ['foobar']
}
</script>
<style scoped>
 
</style>

效果如下:

Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)

Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)

补充知识:nuxt二级路由

耗费了大半天的时间,终于把页面的二级路由配置好了

先看我的目录

Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)

如果没有登陆页,根本就不用考虑嵌套路由的问题,主要的menu跳转和<nuxt />可以直接写到layouts/default.vue中,首页可以放到pages/index.vue,就可以了。

好了,步入核心的

情景,在中间件middleware/authenticated.js

// 定义了一个中间件, 如果用户未登录, 则跳转登录页。
export default function ({
 store,
 redirect
}) {
 if (!store.state.user) {
 return redirect('/login')
 }
}

首先,需要知道,pages/index.vue这个文件必须有,这是给路由'/',定义的页面,但是我真正的首页是在user/index.vue

pages/index.vue下

<template>
 <div style="height:100%;">

 </div>
</template>

<script>
export default {
 created () {
 console.log(this.$router)
 this.$router.push('/login') // 页面加载时跳转
 }
}
</script>

意思是加载二级路由的pages/users.vue页面

<template>
 <div style="height:100%;">
 <el-container style="height:100%">
 <el-header class="theme-bg-color">
 <my-head />
 </el-header>
 <el-container style="height:100%;">
 <my-side />
 <el-main>
 <NuxtChild :key="key"/>
 </el-main>
 </el-container>
 </el-container>
 </div>
</template>
<script>
import MySide from '~/components/MySide.vue'
import MyHead from '~/components/MyHead.vue'
export default {
 components: {
 MySide,
 MyHead
 },
 computed: {
 key() {
 return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
 }
 }
}
</script>

注意,在pages/users/index.vue页面中

export default {
 name: 'users'
}

其他页面,比如pages/users/ditch.vue页面中

export default {
 name: 'users-ditch'
}

一定要这样去写name,官网上也是这样说明的。

总结,嵌套路由(二级路由写法)

一,页面有个user.vue,文件夹也要有个同名的user;

二,最好有index.vue页面;

三,name格式。

源码地址:

https://github.com/besswang/rj-payadmin-nuxt

以上这篇Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery封装的一个js分页
Nov 15 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
JS简单生成随机数(随机密码)的方法
May 11 Javascript
运用jQuery写的验证表单(实例讲解)
Jul 06 jQuery
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
Dec 18 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
JavaScript中this用法学习笔记
Mar 17 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 Javascript
如何利用vue实现波谱拟合详解
Nov 05 #Javascript
关于Vue中$refs的探索浅析
Nov 05 #Javascript
JavaScript 实现轮播图特效的示例
Nov 05 #Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 #Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 #Javascript
JavaScript TAB栏切换效果的示例
Nov 05 #Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 #Javascript
You might like
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
js css后面所带参数含义介绍
2013/08/18 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python 学习教程之networkx
2019/04/15 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
法律专业自我鉴定
2013/10/03 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
临床医师个人自我评价
2014/04/06 职场文书
团队精神的演讲稿
2014/05/14 职场文书
人民检察院起诉书
2015/05/20 职场文书
决心书格式及范文
2019/06/24 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript