解析vue重点问题

476 阅读3分钟

使用vue的时候经常会遇到一些问题,其实仔细阅读查阅官方文档,就会发现文档中已提到一些格外需要注意的点; 为了深入的理解官方文档中对这些问题的解释,查阅了一些资料,再加上自己的理解,整理了一些常见的问题

1、组件三种挂载方式

自动挂载

var app3 = new Vue({
 el: '#app-3',
 data: {
 seen: true
 }
})

手动挂载

// 可以实现延迟按需挂载
<div id="app"> {{name}} </div> 
<button onclick="test()">挂载</button> 
<script> 
 var obj= {name: '前端全栈开发交流圈:864305860'} 
 var vm = new Vue({ 
 data: obj
 }) 
 function test() { 
 vm.$mount("#app"); 
 }//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860

// Vue.extend()创建没有挂载的的子类,可以使用该子累创建多个实例
var app= Vue.extend({ 
 template: '<p>{{message}}</p>', 
 data: function () { 
 return { 
  message: 'message'
  } 
 } 
 }) //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
 new app().$mount('#app') // 创建 app实例,并挂载到一个元素上

2、路由传递参数的方式

<p>
  <!-- query要用path来引入,params要用name来引入,故不能写为 :to="{path:'/login',params: {isLogin: true}} -->
  <!-- 跳转路由时用this.$router: this.$router.push({name:"login",params:{isLogin:true}});this.$router.push({path: '/login', query: {isLogin : true}}); -->
  <!-- 接收参数时用this.$route: this.$route.query.isLogin 和 this.$route.params.isLogin; -->
  <router-link :to="{name:'login',params: {isLogin: true}}">亲,请登录</router-link>
  <router-link :to="{name:'login',params: {isLogin: false}}">免费注册</router-link>
 </p>
 <!-- 路由出口, 路由匹配到的组件将渲染在这里 -->
 <router-view></router-view>

3、对render:h => h(App)的理解 render:h=>h(App)是ES6中的箭头函数写法,等价于render:function(h){return h(App);}.

  • 1.箭头函数中的this是 指向 包裹this所在函数外面的对象上。
  • 2.h是creatElement的别名,vue生态系统的通用管理
  • 3.template:‘',components:{App}配合使用与单独使用render:h=>h(App)会达到同样的效果 前者识别