博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读掘金小册组件精讲总结2
阅读量:6292 次
发布时间:2019-06-22

本文共 2386 字,大约阅读时间需要 7 分钟。

3.组件的通信

(1)ref给元素或组件注册引用信息

(2)$parent/$children 访问父子实例

  (3)  provide/inject(非响应式)

// A.vueexport default {  provide: {    name: 'Aresn'  }}// B.vueexport default {  inject: ['name'],  mounted () {    console.log(this.name);  // Aresn  }}

  使用provide/inject代替vueapp.vue

  

  

  然后可以可以使用混合mixins,将不同逻辑分开到不同js文件再注册app

(4)还是使用vuex好了哈哈...

(5)dispatch/broadcast(vue 1.x) 感觉不好用放弃

(6)自定义函数(其实就是通过一个递归函数)

// 由一个组件,向上找到最近的指定组件function findComponentUpward (context, componentName) {  let parent = context.$parent  let name = parent.$options.name  while (parent && (!name || [componentName].indexOf(name) < 0)) {    parent = parent.$parent    if (parent) name = parent.$options.name  }  return parent}export {  findComponentUpward}// 由一个组件,向上找到所有的指定组件function findComponentsUpward (context, componentName) {  let parents = []  const parent = context.$parent  if (parent) {    if (parent.$options.name === componentName) parents.push(parent)    return parents.concat(findComponentsUpward(parent, componentName))  } else {    return []  }}export {  findComponentsUpward}// 由一个组件,向下找到最近的指定组件function findComponentDownward (context, componentName) {  const childrens = context.$children  let children = null  if (childrens.length) {    for (const child of childrens) {      const name = child.$options.name      if (name === componentName) {        children = child        break      } else {        children = findComponentDownward(child, componentName)        if (children) break      }    }  }  return children}export {  findComponentDownward}// 由一个组件,找到指定组件的兄弟组件function findBrothersComponents (context, componentName, exceptMe = true) {  let res = context.$parent.$children.filter(item => {    return item.$options.name === componentName  })  let index = res.findIndex(item => item._uid === context._uid)  if (exceptMe) res.splice(index, 1)  return res}export {  findBrothersComponents}

  举个例子

child.vueimport { findComponentUpward } from '../utils/assist.js'export default {  mounted () {    const parent = findComponentUpward(this, 'father')    if (parent) {      parent.sayHello()    }  }}

  

father.vue export default {  name: 'father',  data () {    return {      name: 'fater'    }  },  methods: {    sayHello () {      console.log('Hello, Vue.js')    }  },  mounted () { }}

  

 

转载于:https://www.cnblogs.com/gggwf/p/10218790.html

你可能感兴趣的文章
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>