![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
vue
慕宁儿
这个作者很懒,什么都没留下…
展开
-
关于element导航菜单使用for循环出来,展开一个菜单项,其余也都打开的问题
问题描述使用element导航菜单时,使用v-for循环出来的每一项,打卡一个菜单项时发现其他项也都打开了,是因为<el-menu>标签是根据index来定位展开还是关闭的,而使用v-for循环使得每一项的index都是一样的,所以才会一个打开都打开解决办法只需要在循环时,给每一项添加唯一index就可以了,每一项都有自己的唯一id,所以将id作为index,加空字符串是因为index只接受字符串,而id是数字,拼接空字符串可以使数字转为字符串。<el-submenu v-for=原创 2021-09-10 10:27:47 · 3233 阅读 · 0 评论 -
关于element表单重置resetFields()不生效问题
问题描述使用element对话框Dialog,添加编辑使用一个弹出框时,发现使用表单重置方法resetFields()不生效,也就是点击编辑之后关闭弹框,再点击添加,此时弹出框表单仍然保留编辑项的内容而不是全新的空表单。弹框的@close='resetForm'关闭事件绑定了重置表单以及表单验证的方法resetForm(){ //重置表单 this.$refs.form.resetFields(); //重置表单验证 this.$refs.form.cl原创 2021-09-09 21:40:48 · 4249 阅读 · 1 评论 -
Vue路由守卫
src/router/index.js中,保护路由安全(权限)前置路由守卫//全局前置路由守卫-初始化时被调用,每次路由切换之前被调用router.beforeEach((to,from,next)=>{ if(to.name){ //跳转路径校验逻辑(判断) if(){ //校验信息逻辑 next() } }else{ alert('信息错误') }})跳转路径校验可原创 2021-08-26 17:51:13 · 130 阅读 · 0 评论 -
Vue编程式路由导航
脱离<router-link>标签,实现跳转,让路由跳转更加灵活//push模式,不破坏历史记录this.$router.push({ name:'detail', params:{ id:m.id, title:m.title }})//replace模式,覆盖历史记录this.$router.replace({ name:'detail', params:{ id:m.id, t原创 2021-08-25 21:44:37 · 84 阅读 · 0 评论 -
Vue路由传参
query参数不打扰路由配置传递(携带)参数<!-- 跳转并携带query参数,to的字符串写法,记得加: --><router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link><!-- 跳转并携带query参数,to的对象写法,记得加: --><router-link :to="{原创 2021-08-22 20:47:18 · 89 阅读 · 0 评论 -
vue嵌套(多级)路由的两个坑
找不到组件的两个坑1.子级路由path不能加/,否则会找不到组件2.路由入口要写完整路径,否则会找不到组件使用children配置项配置子路由规则export default new VueRouter({ routes:[ //一级路由规则 { path:'/about', component:About }, { path:'/home',原创 2021-08-19 15:16:50 · 871 阅读 · 0 评论 -
vue-router路由使用
路由简介vue的一个插件库,专门用来实现SPA(单页面)应用,点击导航链接不会刷新页面,只做局部更新1.路由就是一组key-value的映射关系2.key为路径,value可能是function或component路由分类后端路由1)理解:value是function,用于处理客户端请求2)工作过程:服务器收到请求时,根据请求路径找到匹配的函数处理请求,返回响应数据.前端路由1)理解:value 是 component,用于展示页面内容。2)工作过程:当浏览器的路径改变时, 对应的组件就原创 2021-08-19 14:27:29 · 126 阅读 · 0 评论 -
vuex模块化+命名空间(namespaced)
目的让代码更好维护,让多种数据分类更加明确修改store.js//求和相关配置const countOptions = { namespaced:true, //开启命名空间 actions:{ addOdd(context,value){ if(context.state.sum % 2){ context.commit('ADD',value) } },原创 2021-08-18 20:08:07 · 576 阅读 · 0 评论 -
vuex使用mapState,mapGetters等进行代码优化
简化模板中插值语法中的表达式。mapState用于帮助我们映射state中的数据为计算属性mapGetters用于帮助我们映射getters中的数据为计算属性mapActions用于帮助我们生成与actions对话的方法,即包含$store.dispatch(xxx)的函数,传递的参数需要在绑定事件时携带,否则参数是事件对象mapMutations用于帮助我们生成与mutations对话的方法,即包含$store.commit(xxx)的函数,传递的参数需要在绑定事件时携带,否则参数是事件对象im原创 2021-08-18 16:42:10 · 174 阅读 · 0 评论 -
vuex工作原理及示例
原理图详解state是对象,用于存储具体数据Dispatch(相当于迎宾)是API,在组件方法中被调用(this.$store.dispatch("add",value)),两个参数,第一个是动作类型(实质是一个函数,配置在actions中),第二个是需要传递的值Actions(相当于服务员)是对象,用于响应组件中的动作,配置add(context,value){},需要向后端发送请求或者有其他逻辑时必需,不需要时可以直接在组件中通过this.$store.commit("ADD",value)触发原创 2021-08-18 14:32:15 · 216 阅读 · 0 评论 -
搭建vuex环境
安装vuexnpm i vuex新建文件src/store/index.js//该文件用于创建Vuex核心store//引入vue核心库import Vue from 'vue'//引入Vueximport Vuex from 'vuex'//使用vuex插件,需要引入vueVue.use(Vuex)//actions用于响应组件中的动作const actions = {}//mutations用于操作state中的数据const mutations = {}//state原创 2021-08-17 19:04:56 · 95 阅读 · 0 评论 -
Vue中的slot插槽
让父组件可以向子组件指定位置插入HTML结构,也是一种组件间通信方式,适用于 父组件==>子组件默认插槽父组件往子组件标签内部放东西时,Vue不知道该放哪,需要在放的地方定义一个插槽(挖个坑,等组件使用者进行填充)。子组件中:<slot>默认值,没有传递具体结构时,会出现</slot>具名插槽name属性给<slot>起名字,组件标签内的标签设置slot属性为匹配插槽<slot>标签的name属性子组件中:<slot name="原创 2021-08-17 16:58:27 · 134 阅读 · 0 评论 -
关于Vue使用es6模板字符串没反应的问题
错误示范VScode发get请求的地址及参数使用单引号''包裹时,发现${this.keyWord}没有变颜色,跟字符串一个颜色,也就是没有将this.keyWord识别成变量,当成了一般字符串,发请求时带的参数问题请求不到结果search(){ this.$axios.get('https://api.github.com/search/users?q=${this.keyWord}').then( res => { console.log(res); }, err =>原创 2021-08-15 23:13:42 · 1437 阅读 · 0 评论 -
解决Vue开发环境 Ajax 跨域问题
跨域:违背了同源策略,请求可以发出去,数据返回到浏览器,被浏览器控制同源策略:规定协议名,主机名,端口号必须一致http://localhost:8080/ http为协议名,localhost为主机名,8080为端口号配置代理服务器代理服务器,与前端所处位置一样,协议名,主机名,端口号一致借助vue-cli配置代理服务器:方式一:在vue.config.js文件中配置,将任何未知请求 (没有匹配到静态文件的请求) 代理到http://localhost:4000module.exp原创 2021-08-15 15:20:28 · 519 阅读 · 0 评论 -
Vue封装的过渡与动画
作用:在插入,更新或移除DOM元素时,在合适的时候给元素添加样式类名动画效果利用<transition>标签(只能控制一个元素)实现过渡,添加name属性需要修改动画类名,添加appear属性可以实现出现时就有动画效果@keyframes定义动画名@keyframes trans{ from{ transform: translateX(-100%); } to{ transform: tr原创 2021-08-13 17:38:54 · 170 阅读 · 0 评论 -
Vue组件间的通信
父组件==>子组件 通信父组件使用子组件时,利用v-bind:标签属性进行传递数据,其中属性名为子组件在props中接收时的声明,属性值为父组件中定义的属性或者方法。<!-- 父组件 --><MyHeader :addTodo="addTodo"/>子组件中利用props进行接收父组件传递过来的数据,使用时直接读取或者调用。//子组件export default { name:'MyHeader', props:[原创 2021-08-12 20:09:51 · 94 阅读 · 0 评论 -
消息订阅与发布(实现任意组件间通信)
一种组件间通信的方式,适用于任意组件间通信利用第三方库pubsub-js(任何一个框架都可以使用)实现安装第三方库pubsub-jsnpm i pubsub-js订阅消息:消息名需要订阅消息(接收数据)的组件//引入的pubsub是一个对象,使用时直接调用其自身的APIimport pubsub from 'pubsub-js'mounted(){ //第一个参数为消息名,第二个参数为接收到的数据,回调函数为普通函数时,this为undefined; //所以需要写箭头函数(或者将回原创 2021-08-12 20:06:03 · 280 阅读 · 0 评论 -
Vue全局事件总线(GlobalEventBus)
意义:实现任意组件间的通信保证:1.所有组件都能找到x2.x可以调用到$on,$off,$emit安装全局事件总线main.js里创建Vue实例时,在beforeCreate()钩子中配置$bus,$bus就是当前应用的vmnew Vue({ el:'#app', render:h => h(App), beforeCreate(){ Vue.prototype.$bus = this //安装全局事件总线 }})使用事件总线接收数据的组件中给this.$bus绑定事原创 2021-08-11 16:32:15 · 225 阅读 · 0 评论 -
Vue组件的自定义事件
一种组件间通信的方式,适用于子组件==>父组件基本使用click,keyup,mouseover等都属于原生js事件,自定义事件指事件名称为自定义。给谁绑的事件找谁触发。通过在父组件中给子组件绑定自定义事件实现(事件的回调在父组件中):子组件给父组件传递数据,不再需要父组件给子组件传递函数类型的props。绑定自定义事件父组件:给子组件实例绑定自定义事件,两种写法一种直接给自组件标签绑定,另一种通过给子组件实例ref属性,在mounted中获取组件实例,调用$on()绑定(更灵活)/原创 2021-08-11 14:36:24 · 192 阅读 · 0 评论 -
Vue中一个重要的内置关系
VueComponent.prototype.__proto__===Vue.prototype显示原型属性prototype;隐式原型属性__proto__实例的隐式原型属性永远指向自己缔造者的原型对象让组件实例对象vc(沿着隐式原型链)可以访问到Vue原型上的属性,方法...原创 2021-08-06 14:47:41 · 143 阅读 · 0 评论 -
Vue生命周期详解
实质Vue在关键时刻帮我们调用的一些特殊名称的函数。this指向:vm或者组件实例对象。可以使用debugger;打断点调试beforeCreate(将要创建)创建之前指的是数据监测和数据代理创建之前生命周期与事件初始化完成,但数据代理还未开始,调用,所以此时无法通过vm访问到data中的数据和methods中方法。created(创建之后)数据监测和数据代理初始化完成调用,此时可以通过vm访问到data中的数据和methods中配置的方法。beforeMounted(将要挂载)Vue开原创 2021-08-05 16:05:29 · 106 阅读 · 0 评论 -
Vue数据代理
Object.defineProperty()方法添加的属性不会被遍历到给对象添加(定义)属性的方法Object.defineProperty(对象名,'要添加的属性名',{配置项,如value:18})第三个参数配置项enumerable:(控制属性是否可以被枚举,默认false)为true可以使添加的属性可被遍历writable:控制属性是否可以被修改,默认falseconfigurable:控制属性是否可以被删除,默认falseget(){ return number }:当有人读取该原创 2021-08-04 14:08:20 · 83 阅读 · 0 评论 -
v-for中key的原理
虚拟DOM中key的作用使用v-for时一定要写:key,代表不同节点key是为了给节点一个标识,相当于人类社会的身份证号。需要使用key声明数据中的哪项作为节点的唯一标识,比如id====>:key="item.id"使用index做key的坑可能会引发的问题:对数据进行破坏顺序操作时会产生没必要的真实DOM更新,效率低;结构中包含输入类的DOM,会产生DOM错误更新,界面有问题具体过程:vue根据原始数据生成初始虚拟DOM,再将初始虚拟DOM转成真实DOM,往数组前面里添加新的ite原创 2021-08-04 13:06:36 · 281 阅读 · 0 评论 -
vue中自定义方法this指向问题
自定义方法(普通函数)内部的this指向vue实例(vm)。不建议用箭头函数,因为箭头函数this本身没有指向,会去外边找,找到的this是window对象,而不是vue实例。原创 2021-08-03 15:02:06 · 752 阅读 · 0 评论 -
Vue计算属性相关
计算属性插值语法插入有返回值得自定义方法,必须带小括号。使用计算属性时,插值表达式直接读取使用,如fullName属性为data中的数据。计算属性:computed与data同级,对象形式通过已有属性计算得来在vm中放的是一个新的属性get和set都是普通方法data:{ firstName:'', lastName:''},computed:{ fullName:{ //有人读取fullName,get被调用,返回值作为fullName的值 //get在初次读原创 2021-08-03 16:24:44 · 72 阅读 · 0 评论