美文网首页
(十)provide和inject

(十)provide和inject

作者: Mr_莫言之 | 来源:发表于2020-10-18 09:16 被阅读0次
本章将介绍到的是Vue3.x中的provide和inject,他们的使用时成组合使用,用于从父级组件向下级的子组件,孙组件传递值。

1、概述:实现嵌套组件树形数据传递与接收。
2、使用:由vue提供,按需引入:import { provide, inject } from 'vue';
3、用例:

import { provide, inject } from 'vue'
// 父组件注入
const component = {
  setup() {
    provide('name', 'zhagn_san');
    // 如果是需要注入多个值则重复使用provide即可
  };
};
// 子组件接收
const children = {
  setup() {
    // inject的第二个参数为没有接收到注入的数据时的默认返回值,如果没有,则返回undefined
    const user = inject('name', 'li_si');
    // 需要接收多个注入的值也是重复使用inject即可
    return { user };
  };
};

4、实例:再实际使用过程中,往往我们需要将注入的值实现响应式变化,则需要注入响应式

// 父组件注入
const component = {
  setup() {
    const user = reactive({ name: 'zhagn_san', age: 20 });
    provide('user', user);
  };
};
// 子组件接收后,如果父组件中的user发生了改变,则子组件中也会发生响应式变化
const children = {
  setup() {
    const user = inject('user', {});
    return { user };
  };
};

5、注意:不建议在注入时对响应式变量进行改变(在子组件中改变注入的值),因为此操作会改变Vue的单向数据流。建议采用注入改变其值的方法来对响应式变量进行改变。

import { reactive, provide, inject } from 'vue'
// 父组件注入
const component = {
  setup() {
    const user = reactive({ name: 'zhagn_san', age: 20 });
    function changeHandler() {
        user.age = 30;
    }
    provide('user', user);
   provide('changeHandler', changeHandler);
  };
};
// 子组件接收后,通过调用注入的方法来对响应式变量进行改变
const children = {
  setup() {
    const user = inject('user', {});
    const changeHandler = inject('changeHandler');
    return { user, changeHandler };
  };
};

下一章:(十一)template和ref获取元素或组件实例
上一章:(九)Vue3.x生命周期

ps:列位,千万别高估自己在别人心中的地位,因为那样会让自己尴尬,出丑!

相关文章

  • (十)provide和inject

    本章将介绍到的是Vue3.x中的provide和inject,他们的使用时成组合使用,用于从父级组件向下级的子组件...

  • vue 解决provide和inject响应

    vue 解决provide和inject响应 官网上说provide 和 inject 绑定并不是可响应的。这是刻...

  • provide 和 inject

    https://cn.vuejs.org/v2/api/#provide-inject[https://cn.vu...

  • vue新特性provide/inject深入学习

    provide/inject深入学习 本文深入探究provide,inject 在官网porivide, inje...

  • Vue - provide和inject

    Vue 2.2.0新增了一对依赖注入API,provide 和 inject。 主要作用: 允许一个祖先组件向其所...

  • provide/inject

    作用 成对出现,在组件中可以获取祖先组件的方法/属性,不管该组件嵌套有多深。 一般来说,我们可以通过$parent...

  • provide/inject

  • provide / inject

    类型: provide:Object | () => Objectinject:Array | { [key: ...

  • provide/inject

    使用provide传递当前组件实例 在后代组件中接收组件

  • provide / inject

    provide / inject这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次...

网友评论

      本文标题:(十)provide和inject

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