vue.use 的使用, render里面的h是什么,路由钩子的执行过程

本文深入探讨了Vue.js中Vue.use方法的使用方式及其在自动全局注册组件中的应用,并详细解释了Vue路由钩子的执行流程及组件间的传值方法。

目录

Vue.use

自动全局注册组件

 render里面的h是:

路由钩子的执行过程

组件传值之ref


Vue.use

Vue.use(js对象/function,参数)
js对象:{
    install(Vue,options){
      // 在Vue.use后,该方法会执行  
    }
}
function:function(Vue,options){
  // 在Vue.use后,该方法会执行    
}

// 1.这个是函数的注册
// export default function(Vue, options) {
//   console.log(options)
//   Vue.component(PageTools.name, PageTools)
// }
// 2.还一种是对象的形式
// export default {
//   install(Vue, options) {
//     console.log(options)
//     Vue.component(PageTools.name, PageTools)
//   }
// }

自动全局注册组件

 render里面的h是:

路由钩子的执行过程

  1. beforeRouteLeave ----导航离开该组件的对应路由时调用

  2. beforeEach ----------------全局前置守卫

  3. beforeEnter --------------------在路由配置里调用

  4. beforeRouteEnter ---------------在被激活的组件里调用

  5. beforeResolve ------------------同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用

  6. afterEach -----------------------全局后置钩子

路由更新:

  • beforeEach ----------------全局前置守卫

  • beforeRouteUpdate ----------------在重用的组件里调用

  • afterEach -----------------------全局后置钩子

组件传值之ref

父子组件传值

  1. props与emit

  2. ref传值

    获取组件的实例对象

    1. 父获取子组件实例对象

      1. 子组件标签 ref="xxx"

      2. 子组件的this(实例对象)====this.$refs.xxx

    2. 子获取父组件实例对象

      1. this.$parent===父组件的实例对象,它找到的父组件是最近的父组件

        1. 子组件标签如果是其它组件包着的就是其它组件是它的父级

        2. 如果子组件标签是原生标签包着的,它的父组件就是它所在的组件

main.js:26 [Vue warn]: Property or method "handleOpen" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties. found in ---> <IndexCom> at src/components/index.vue <App> at src/App.vue <Root> warn @ vue.runtime.esm.js:4482 warnNonPresent_1 @ vue.runtime.esm.js:5082 get @ vue.runtime.esm.js:5115 render @ index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/index.vue?vue&type=template&id=47323bf2&scoped=true:44 Vue._render @ vue.runtime.esm.js:2649 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6737 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 eval @ main.js:26 ./src/main.js @ app.js:597 __webpack_require__ @ app.js:646 (anonymous) @ app.js:1797 __webpack_require__.O @ app.js:696 (anonymous) @ app.js:1798 (anonymous) @ app.js:1800Understand this errorAI main.js:26 [Vue warn]: Property or method "handleClose" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties. found in ---> <IndexCom> at src/components/index.vue <App> at src/App.vue <Root> warn @ vue.runtime.esm.js:4482 warnNonPresent_1 @ vue.runtime.esm.js:5082 get @ vue.runtime.esm.js:5115 render @ index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/index.vue?vue&type=template&id=47323bf2&scoped=true:45 Vue._render @ vue.runtime.esm.js:2649 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6737 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 eval @ main.js:26 ./src/main.js @ app.js:597 __webpack_require__ @ app.js:646 (anonymous) @ app.js:1797 __webpack_require__.O @ app.js:696 (anonymous) @ app.js:1798 (anonymous) @ app.js:1800Understand this errorAI main.js:26 [Vue warn]: Invalid handler for event "open": got undefined found in ---> <ElMenu> at packages/menu/src/menu.vue <ElAside> at packages/aside/src/main.vue <ElContainer> at packages/container/src/main.vue... (1 recursive calls) <IndexCom> at src/components/index.vue <App> at src/App.vue <Root> warn @ vue.runtime.esm.js:4482 updateListeners @ vue.runtime.esm.js:1859 updateComponentListeners @ vue.runtime.esm.js:3541 initEvents @ vue.runtime.esm.js:3520 Vue._init @ vue.runtime.esm.js:5443 VueComponent @ vue.runtime.esm.js:5576 createComponentInstanceForVnode @ vue.runtime.esm.js:4422 init @ vue.runtime.esm.js:4276 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6737 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 eval @ main.js:26 ./src/main.js @ app.js:597 __webpack_require__ @ app.js:646 (anonymous) @ app.js:1797 __webpack_require__.O @ app.js:696 (anonymous) @ app.js:1798 (anonymous) @ app.js:1800Understand this errorAI main.js:26 [Vue warn]: Invalid handler for event "close": got undefined found in ---> <ElMenu> at packages/menu/src/menu.vue <ElAside> at packages/aside/src/main.vue <ElContainer> at packages/container/src/main.vue... (1 recursive calls) <IndexCom> at src/components/index.vue <App> at src/App.vue <Root> warn @ vue.runtime.esm.js:4482 updateListeners @ vue.runtime.esm.js:1859 updateComponentListeners @ vue.runtime.esm.js:3541 initEvents @ vue.runtime.esm.js:3520 Vue._init @ vue.runtime.esm.js:5443 VueComponent @ vue.runtime.esm.js:5576 createComponentInstanceForVnode @ vue.runtime.esm.js:4422 init @ vue.runtime.esm.js:4276 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6737 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 eval @ main.js:26 ./src/main.js @ app.js:597 __webpack_require__ @ app.js:646 (anonymous) @ app.js:1797 __webpack_require__.O @ app.js:696 (anonymous) @ app.js:1798 (anonymous) @ app.js:1800Understand this errorAI main.js:26 [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 mousewheel @ element-ui.common.js:1140 bind @ element-ui.common.js:1140 callHook @ vue.runtime.esm.js:6892 _update @ vue.runtime.esm.js:6812 updateDirectives @ vue.runtime.esm.js:6796 invokeCreateHooks @ vue.runtime.esm.js:6349 createElm @ vue.runtime.esm.js:6245 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 merged @ vue.runtime.esm.js:4439 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 createChildren @ vue.runtime.esm.js:6335 createElm @ vue.runtime.esm.js:6243 patch @ vue.runtime.esm.js:6706 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 init @ vue.runtime.esm.js:4277 createComponent @ vue.runtime.esm.js:6264 createElm @ vue.runtime.esm.js:6226 patch @ vue.runtime.esm.js:6737 Vue._update @ vue.runtime.esm.js:3669 updateComponent @ vue.runtime.esm.js:3769 Watcher.get @ vue.runtime.esm.js:3363 Watcher @ vue.runtime.esm.js:3353 mountComponent @ vue.runtime.esm.js:3790 Vue.$mount @ vue.runtime.esm.js:8323 eval @ main.js:26 ./src/main.js @ app.js:597 __webpack_require__ @ app.js:646 (anonymous) @ app.js:1797 __webpack_require__.O @ app.js:696 (anonymous) @ app.js:1798 (anonymous) @ app.js:1800 main.js:26 [Intervention] Slow network is detected. See https://www.chromestatus.com/feature/5636954674692096 for more details. Fallback font will be used while loading: http://localhost:8081/fonts/element-icons.ff18efd1.woff vue.runtime.esm.js:8334 Download the Vue Devtools extension for a better development experience: https://github.com/vuejs/vue-devtools index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/studentList.vue?vue&type=script&lang=js:17 后台返回的数据: {data: Array(4), status: 200, statusText: '', headers: AxiosHeaders, config: {…}, …}
最新发布
10-07
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值