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 相关文章推荐
Extjs学习笔记之四 工具栏和菜单
Jan 07 Javascript
Notify - 基于jquery的消息通知插件
Oct 18 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
解决vue点击控制单个样式的问题
Sep 05 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
Aug 22 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
全面了解js中的script标签
2016/07/04 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python保存字符串到文件的方法
2015/07/01 Python
python中reader的next用法
2018/07/24 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
争论的故事教学反思
2014/02/06 职场文书
环保公益广告语
2014/03/13 职场文书
购房个人委托书范本
2014/10/11 职场文书
个人先进事迹总结
2015/02/26 职场文书
工程项目合作意向书
2015/05/08 职场文书
工作简报格式范文
2015/07/21 职场文书
建议书的格式及范文
2015/09/14 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers