Vue 开发常用技巧(笔记持续更新)

245 阅读1分钟

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没有依赖注入灵活。