Vue privide 和inject 依赖注入的使用详解

Vue中,provide和inject是实现依赖注入的两个函数。在组件树中,父组件可以通过provide提供一些数据或方法,子组件可以通过inject来注入这些数据或方法。

在使用provide向下传递时,我们可以把需要传下去的属性或方法放在一个对象中。如下面的例子:

// Parent.vue
<template>
  <div>
    <child :title="title"></child>
  </div>
</template>

<script>
import Child from './Child.vue'

export default {
  components: {
    Child
  },
  provide() {
    return {
      title: '我是标题'
    }
  }
}
</script>

// Child.vue
<template>
  <div>{{ title }}</div>
</template>

<script>
export default {
  inject: ['title']
}
</script>

以上代码中,父组件通过provide向下传递了一个title属性,并提供了一个固定值。在子组件中,我们使用inject注入provide提供的title属性,将其值渲染到模板中。

另一个示例,如下:

// Grandparent.vue
<template>
  <div>
    <parent></parent>
  </div>
</template>

<script>
import Parent from './Parent.vue'

export default {
  components: {
    Parent
  },
  provide() {
    return {
      sayHello: this.sayHello
    }
  },
  methods: {
    sayHello() {
      console.log('Hello from Grandparent component')
    }
  }
}
</script>

// Parent.vue
<template>
  <div>
    <child></child>
  </div>
</template>

<script>
import Child from './Child.vue'

export default {
  components: {
    Child
  },
  inject: ['sayHello']
}
</script>

// Child.vue
<template>
  <button @click="sayHello">Say Hello</button>
</template>

<script>
export default {
  inject: ['sayHello']
}
</script>

以上代码中,我们提供了一个sayHello方法, 并向下传递了该方法。 在Child.vue中,我们注入了该方法,并在按钮上添加了事件,以响应按钮的点击事件,并在控制台上输出“Hello from Grandparent component”。

总结一下,Vue中provide和inject是实现依赖注入的两个函数,可以在一个父组件上提供数据或方法,然后在子组件中通过inject注入使用。这种方式可以帮助我们在父子组件之间完成数据或方法的传递和共享,使代码更加简洁和易于维护。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue privide 和inject 依赖注入的使用详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 改变vue请求过来的数据中的某一项值的方法(详解)

    下面我将详细讲解改变 Vue 组件请求过来的数据中的某一项值的方法。 确定需要修改的数据 首先我们需要确定需要修改的数据,可以通过在 Vue 组件的 mounted 或 created 钩子中打印请求到的数据,查看需要修改的数据具体位置。比如下面这个例子: export default { data() { return { user: null } }, …

    Vue 2023年5月29日
    00
  • Nuxt.js实战和配置详解

    Nuxt.js是一个基于Vue.js的服务端渲染框架,它可以帮助开发者快速构建出高效可靠的Web应用程序。本文将详细讲解Nuxt.js实战和配置详解,包括安装、初始化项目、路由配置、视图渲染等内容。 安装 首先,在全局安装vue-cli脚手架: npm install -g vue-cli 接着,初始化一个项目: vue init nuxt-communit…

    Vue 2023年5月28日
    00
  • vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解

    下面详细讲解“vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解”的完整攻略。 1. vue-cli 3.0 与 3.0 以下版本的区别 1.1 脚手架版本 vue-cli 3.0 与 3.0 以下版本最明显的区别是使用的脚手架是不同的。vue-cli 3.0 使用的是 @vue/cli,而 3.0 以下版本使用的是 vue-cli。因此,安…

    Vue 2023年5月28日
    00
  • Vue3后台管理系统之创建和配置项目

    下面是对“Vue3后台管理系统之创建和配置项目”的完整攻略: 一、安装Node.js和Vue CLI 在官网https://nodejs.org/下载并安装最新版的Node.js。 打开终端或命令行,运行以下命令安装Vue CLI: npm install -g @vue/cli 验证Vue CLI是否安装成功,运行以下命令: vue –version 如…

    Vue 2023年5月28日
    00
  • Vue全局监测错误并生成错误日志实现方法介绍

    下面是关于 Vue 全局监测错误并生成错误日志的实现方法介绍: 1. 概述 在 Vue 应用中,当出现异常时,我们通常会看到浏览器控制台中会输出错误信息。但在生产环境下,我们无法及时定位问题所在,也无法了解问题的发生频率和趋势。因此,我们需要全局监测错误并生成错误日志,以便更好地进行错误排查和分析。 2. 实现方法 实现全局错误监测并生成错误日志,可以采用如…

    Vue 2023年5月28日
    00
  • vue-property-decorator用法详解

    Vue.js 是一个非常受欢迎的前端框架,它能够快速构建交互性强的单页面应用。而 vue-property-decorator 是一个用于 Vue.js 的装饰器库,可以帮助我们更方便地编写 Vue.js 组件。下面来详细讲解 vue-property-decorator 的用法。 安装 通过 npm 安装 vue-property-decorator: n…

    Vue 2023年5月27日
    00
  • vscode 插件开发 + vue的操作方法

    Vscode 插件开发 + Vue 操作方法 在本文中,我们将介绍如何使用 VSCode 开发插件,并在插件中使用 Vue。 环境要求 在开始使用 Vue 进行开发之前,我们需要先安装好以下环境: Node.js Visual Studio Code Vue CLI 如果您的电脑上还没有这些环境,请先安装好它们。 创建一个 VSCode 插件项目 使用以下命…

    Vue 2023年5月28日
    00
  • Vue自定义图片懒加载指令v-lazyload详解

    当我们访问一个页面时,图片数量很多,如果立即全部加载会占用很多带宽和资源,降低用户体验,所以利用图片懒加载技术可以解决这个问题。Vue自定义指令v-lazyload实现图片的懒加载效果。 1. v-lazyload指令的原理 该指令的原理是在图片的可见区域内,进行异步加载图片,只有当图片出现在可见区域内时才加载,利用了IntersectionObserver…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部