1. 依赖注入(provide/inject)
-
使用场景: 当我们需要把父组件的一个状态(数据)传递到子组件的子组件...第n个子组件,一层一层传递是很麻烦的,这样就用到了依赖注入(vue2.2.0新增);
-
使用方法: provide/inject 是成对存在的,我们在 父组件 里用provide写一个注入例如下面代码:
provide() { return { injectData: this.test }; }, data() { return { test: "测试" }; },接下来我们在任意层级的 子组件 内使用下面的代码:
name: "son", inject: ["injectData"]这样就可以在子组件内直接this使用了。
-
注意: provide/inject的绑定是不可响应的(就是injectData必须是直接可响应的,在子组件内才会被响应,例如上面的写法)。如果injectData是一个对象,对象在包含this.test,那么我们在改变test的时候子组件并不会响应,解决方式是直接传入this座位响应(例如下面代码),但是有弊端还需谨慎。
//改变test的时候子组件并不会响应 provide() { return { injectData: { test: this.test } }; }, data() { return { test: "测试" }; }, -
为什么不用vuex? vuex没有依赖注入灵活。