1、父子组件传值
父传子:
页面中定义的数据可以在父组件的标签中使用:name="name1"绑定属性,在子组件页面中使用props的方式进行3 传值


父组件中定义的数据,使用绑定属性的方法,给子组件标签绑定属性,然后在子组件页面中使用props和插值表达式来接收数据。(props中的数据不能修改,需要中转),但是在子组件中想要修改父组件传过来的值,此时如果自定义一个update函数,只能修改当前页面的数据,如下图

此时,就需要使用$emit来触发一个自定义事件$emit,格式如下,此处引号中的updateData是自定义事件的名称,其次将当前页面中转props数据的myName和myAge分别定义为name和age。注意格式,里面是一个对象

在父页面中的子页面标签中添加@updateData="updateData",前面的updateData是子页面中自定义事件的名称,后面的updateData是给当前页面定义的一个函数的名称,然后在methods中定义该方法,此处的e就是子页面传给父页面的数据,如下图。最后修改当前页面的数据即可。


2.祖孙组件传值
首先同样可以使用父子组件传值的方式,一层一层从祖级传给父级,再从父级传给子级。
2.1祖级传给子级
在祖级页面中写一个provide方法,该方法返回的对象里面的数据是依赖数据(子组件所需要的数据)。如下图所示

然后在子级页面中创建一个inject数组,里面接收所需传输的数据,此处的数据可以是父级里面注入的数据,也可以是祖级注入的数据(在父级和祖级数据中使用provide),使用inject注入的数据与props一样,不能修改。

2.2祖孙组件传值
在祖先页面中先定义一个方法,并传参,然后将这个方法注入依赖(provide),然后在子孙页面中的inject接收依赖,然后执行父级组件中传出的方法。



2.3兄弟组件传值
在vue的原型对象上添加一个属性叫$bus,该属性是一个vue实例对象,这个技术叫中央事件总线,在vue的入口文件main.js中添加该属性,如下图所示。

在两个兄弟组件中分别写入,如下图所示


4. *全局状态管理 Vuex
1.安装: npm install vuex --save
2.在入口文件main.js中导入并使用
import Vuex from ' vuex '
Vue.use(Vuex)
3.创建全局状态管理对象vuex

4.注册

我们一般在src资源文件夹中单独创建一个store文件夹,然后在该文件夹中创建index.js,然后将上述内容全部迁移至该文件中,此处需要单独引入vue,并且在创建全局状态管理对象时直接导出,如下图所示

最后在入口文件main.js中引导入store
