vue路由子组件不显示
今天和朋友们分享vue路由子组件不显示相关的知识,相信大家通过本文介绍也能对vue 子路由内容不显示有自已的收获和理解。自己轻松搞问题。
本文内容目录一览:
- 1、引用Vue子组件不显示问题
- 2、vue-router使用过程遇到的问题
- 3、vue由于设置为null,子组件在一开始加载时加载不了
- 4、Vue常见错误及解决方法:
- 5、vue父组件数据变化,子组件不变的情况解决
引用Vue子组件不显示问题
Vue子组件需要先声明再引用。例如:
//声明组件
input-number.js
index.js
//引用组件
index.html
vue-router使用过程遇到的问题
初学vue问题记录
问题一、vue-router使用过程遇到的登录页空白问题
之前用vue-cli创建了一个vue项目,默认使用vue-router,目录结构中自带了router目录,里面有index.js
但是当我又创建一个项目的时候默认没有使用vue-router时,后面我使用npm install vue-router安装了插件之后项目中没有自动创建router目录。查找资料显示说这种方式不会创建router目录,自己就把前面创建的项目的router目录及里面的文件拷贝过来使用。
使用的过程中,新建立的项目我自己单独写了一个Login.vue,想把这个登录页面作为首页,使用vue-router配置。我就修改了router目录的index.js。如下:
main.js中引入router.js。如下:
到这里就是我找到的资料要配置登录页的,加上我不使用router-link,我就没有修改App.vue。我以为都配置完成了,就直接启动项目,发现页面空白。后来才发现App.vue中没有使用router-view/router-view。在App.vue加入router-view/router-view启动就成功显示登录页面了。
总结:使用vue-router,
1.需要在router目录的index.js维护好路由
2.main.js中引入router下文件
3.App.vue中使用router-view
最后还发现了一个问题,用 访问title上的favicon没有显示;
用访问title上的favicon就能显示
通过测试发现,好像是浏览器缓存问题,清除浏览器缓存又可以正常显示了。
问题二、使用vue-router过程中,子路由不显示问题
问题描述,我的项目是一个登录页面,项目默认显示登录页面;登录成功后显示登录成功后的默认页面,我的默认页面是由header公共导航和内容组件组成,这个时候出现了问题,header部分组件显示正常,但是内容组件不显示。经过分析查阅资料是因为父路由组件没有使用router-view导致的。我的header组件是由两个组件组成的,就在header组件内加上router-view登录成功后的默认页面就显示正常了。
HeadLayout.vue中增加router-view,解决子路由不显示问题
总结:要使用路由一定要在使用router-view,要在父级组件中使用。
问题三、子路由跳转问题
问题描述:原本MainMenu.vue中使用的是a链接,我添加的click方法进行路由切换,但是总是失败,切换后一闪第二个页面的内容,然后又显示第一个页面内容。写法如下:
第二个子路由页面内容闪一下
最终显示第一个子路由页面内容
这个a链接click的问题原因出现在href上,我只是清空了里面的内容,需要删除该属性,或者将值改为href="javascript:;",
解析参照:
自己换成router-link实现路由切换,可以正常切换。另外要在router-link上使用click方法切换路由,而不使用to属性,需要使用native修饰符。@clike.native
但是还有一个问题就是我加了一个样式,给router-link,想让激活的link带背景色。我这种写法两个都有这个样式
.router-link-active {
background: #848484;
}
效果如下:
于是我又弃用click了,直接使用to属性才没有问题。
vue由于设置为null,子组件在一开始加载时加载不了
动态组件无效导致的。
经查询网上相关公开信息及资料得知,因为vue框架的动态组织设置为null,导致第一次进入parent组件aa组件的对话框中的动态组件无效,第二次进入的时候才有效,所以第一次没有加载出来,返回上一级界面,重新进入组件,在打开对话框子组件有加载出来了。
Vue常见错误及解决方法:
Vue常见错误及解决方法:
1.[Vue-warn]: Missing required prop: "to"(found in component )
这个错误是少了个to或者是写错 ,正确写法为:
并且路由在做字符串拼接的时候,to要作为一个属性绑定
2.端口冲突错误:需要改端口,当然现在vue2.0中的webpack 已经自己会根据你的端口号进行改正,从8080往后面进
行递增,不会发生端口号冲突的情况,在vue1.0中会经常出现。
3.[Vue-warn]:Unknown custom element: - did you register the component correctiy?
错误1:引进来的vue-router没有use()
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter);
错误2:在生成路由实例之后,没有将路由挂到我们的Vue实例上面
const router=new VueRouter({
mode:'history',//切换路径模式,变成history模式,不然路径为/#/home
scrollBehavior:()=({ // 滚动条滚动的行为,不加这个默认就会记忆原来滚动条的位置
y:0
}),
// 注意这里的名称
routes
});
new Vue({
/* 4.最后挂到vue上 */
router,
el: '#app',
render: h = h(App)
});
4.Uncaught TypeError: _vuex2.default.store is not a constructor
这个报错的是_vuex2.default.store 不是一个构造函数
因为在我们用vuex的时候需要将用到的actions,mutations模块最终导出,
在导出的时候new Vuex.Store中的Store小写了,这里的一定要大写,
就相当于我们在使用构造函数(类)的时候首字母要大写
import mutations from './mutations. js '
import actions from './actions. js '
export default new Vuex.Store({ //Vue.Stroe()首字母大写
modules:{ //这里注意mutations导出的是一个模块
mutations
},
actions
});
5.Moudel not found:Error:Can't resolve "style" in 'D:\vue-demo'
在vue1.0中,在webpack.config.js中配置css文件时
module:{
loaders:[
{
test:/\.css$/,
loader:'style!css'
}
]
}
在vue2.0中,在webpack.config.js中配置css文件时,必须要写全,不能和vue1.0一样简写
module:{
rules:[ //这里改成了rules
{
test:/\.css$/,
loader:'style-loader!css-loader' //这里必须要写全,不能和vue1.0一样简写
}
]
}
6.组件之间的通信从1.0过渡到2.0时引发的错误:
vue1.0实现父子组件的通信 --通过props属性--并且子组件可以更改父组件的数据 通过sync同步,
当在vue2.0里面不允许直接给父级数据做更改,并且把这个方法.sync去掉了,
当子组件再试图更改父组件的数据时,就会报错。
解决方法:
1.$emit()——单一事件管理
经常遇到的问题是找不到$emit()或$on(),这时需要单独准备一个文件Store.js
在文件里面需要:var oEvent =new Vue();
这个这个文件里的数据一定要导出去才可以使用:export default oEvent
2.对象之间的引用:(推荐使用)
vue1.0传数据:msg:'welcome' --传给子级
vue2.0直接将数据定义成对象json的形式,这样传给子级的数据是对象的属性,即msg.title
这样子级修改父级的数据,修改的也是这个对象的一个属性msg.title
msg:{
title:'welcome'
}
msg.title
7.用vuex用来管理组件状态:(增加/减少,显示/隐藏)
8.axios目前不可以use,因为axios里面没有install这个方法
使用axios的时候,可以这样来使用:
1.将axios导入文件
import axios from 'axios'
2.将axios放入到Vue实例上面,这样在其他组件中,可以直接通过this.$https.get/post使用
在main.js中写:Vue.prototype.$http = axios
其他组件可以直接使用:
this.$http.get('data.txt').then((res)={
console.log(res.data);
}).catch((err)={
console.log(err);
});
9.element.ui表头点击事件
使用element.ui之后 @click="" 无法对表头等元素添加点击事件,正确的写法应该是@click.native=""
10.webpack2.0
插件的配置需要放到 plugins里面进行配置,不可放到rules里面进行配置
vue父组件数据变化,子组件不变的情况解决
在父组件中的数据发生变化时,传给子组件,子组件未发生变化。
解决方法:看子组件是否能监听到子组件的变化,然后mounted赋值给子组件的绑定的变量中。
如果有什么问题希望大家多交流。
关于vue路由子组件不显示和vue 子路由内容不显示的介绍到此就结束了,不知道你找到你需要的信息了吗 ?如果想了解更多这方面的信息,记得收藏关注本站。