美文网首页
vue自定义选项合并策略

vue自定义选项合并策略

作者: 悠哈121 | 来源:发表于2021-11-19 16:37 被阅读0次
  • Vue的mixins,混入的data、props、methods里面的方法与组件的方法同名时,混入的方法会被组件的方法覆盖掉,同名的钩子函数合并为一个数组,执行的顺序是先混入钩子在自身钩子
  • Vue中提供了一个api(Vue.config.optionMergeStrategies),可以通过这个api自定义选项的合并策略
// 在切换浏览器页标签的时候停用当前页面组件的定时器
// 1.最简单的实现思路就是在每个组件的create中添加监听页面标签切换事件
export default {
  created () {
       window.addEventListener("visibilitychange", this.fn )
      // 使用hookEvent
      this.$on('hook:beforeDestory', () => { window.removeEventListener('visibilitychange', this.fn ) })
  },
 methods: {
       fn () { // 清除定时器 }
  }
}

// 2. 进一步优化 封装复用 将其封装成也标签切换的钩子函数
utils/cycle.js
// 定义页面标签切换钩子函数
export function init(){
  const optionMergeStratigies = vue.config.optionMergerStratigies
  optionMergeStratigies.pageHidden  = optionMergeStratigies.created
// 定义切面切换钩子函数的触发时机和绑定vue根实例(用于递归调用子组件)
export function bind(vm){
  window.addEventListener("visibilitychange",() => {
    notifyVisibleChange("pageHidden",vm)
  })
}
notifyVisibleChange(fn,vm){
  const fnArr = vm.$options[fn]
// 钩子函数在option中以数组的形式存在
 if( fnArr && fnArr.length ) {
  // 给钩子函数绑定当前的this为当前组件实例
   fnArr.forEach( fn => fn.call(vm) )
 }
 if( vm.$children && vm.$children.length ) {
   vm.$children.forEach(child => {
      notifyVisibleChange(fn, child)
    })
 }
}
// 测试 入口文件main.js添加 
import {init,bind } from 'utils/cycle'
init()
const vm = new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

// 将rootVm 绑定到生命周期函数监听里面
bind(vm)

//需要在监听的页面添加
pageVisible(){} pageHidden(){}

相关文章

  • 2018-08-17--Vue技术内幕摘记4

    Vue选项的合并策略 1.选项 el、propsData 的合并策略 说明:el选项或者propsData选项只能...

  • 2018-07-26VUE处理边界情况

    SSBsb3ZlIHlvdSxJIG1pc3MgeW91链接 自定义合并选项策略 自定义选项合并策略 https:...

  • 2018-08-20--Vue技术内幕摘记5

    Vue初始化开篇 1.用于初始化的最终选项 $options 1)自定义选项以及自定义选项合并策略 我们发现el确...

  • vue自定义选项合并策略

    Vue的mixins,混入的data、props、methods里面的方法与组件的方法同名时,混入的方法会被组件的...

  • 深入剖析Vue源码 - 选项合并(下)

    上一节深入剖析Vue源码 - 选项合并(上)的末尾,我们介绍了Vue中处理合并选项的思路,概括起来主要有两点,一是...

  • Vue源码解析: 丰富的选项合并策略

    简介 在Vue的初始化过程中,最开始的阶段就是选项合并阶段。它通过调用mergeOptions函数将两个选项配置合...

  • Vue 选项合并规则

    data、provide 等选项使用 mergeDataOrFn 生命周期钩子 及 watch 合并为 数组,使得...

  • 混合

    1.合并 一种分发Vue组件中可复用功能的方式 Vue.extend()合并策略相同 2.全局混合 谨慎使用全局混...

  • 给Vue扩展方法

    在Vue中我们有如下生命周期方法: 给vue增加一个扩展函数 Vue合并策略在Vue中使用mixins时会发现, ...

  • Git合并策略选项及示例

    在工作分支开发并且测试完成之后,对于如何将工作分支合并回主线分支,团队通常会有一些可选方式。你们团队使用什么样的合...

网友评论

      本文标题:vue自定义选项合并策略

      本文链接:https://www.haomeiwen.com/subject/jbestrtx.html