MarginLon MarginLon
首页
  • Web

    • Web基础
    • Web布局
    • CodeSnippet
  • Vue

    • Vue
  • React

    • React
  • Node.js

    • Node.js
  • 技术文档
  • UI组件库
  • 动画库
  • 图形库
  • 桌面端
  • 学习笔记
  • 生活笔记
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

MarginLon

http://info.cern.ch
首页
  • Web

    • Web基础
    • Web布局
    • CodeSnippet
  • Vue

    • Vue
  • React

    • React
  • Node.js

    • Node.js
  • 技术文档
  • UI组件库
  • 动画库
  • 图形库
  • 桌面端
  • 学习笔记
  • 生活笔记
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

    • MVVM
    • 指定视图容器的N种方案
    • data
    • 数据劫持
    • 小胡子语法
    • computed
    • 响应式细节
    • provide和inject
      • Vue 2
        • provide和inject的响应式处理
        • 1.传入响应式数据
        • 2.以函数式的方式传入
    • EventBus
  • Vue-Router

  • Vuex

  • 《Vue》
  • Vue
MarginLon
2022-10-10
目录

provide和inject

# Vue 2

# provide和inject的响应式处理

# 1.传入响应式数据

提示

vue2虽然不能像vue3那样创造响应式数据ref、reactive,但vue2的this就是个响应式数据。如果我们直接在父元素中提供依赖this,那么后代组件就能获得响应式。

// <!-- 父组件 -->
provide() {
  return {
    parent: this
  }
}
1
2
3
4
5
6
<!-- 子组件 -->
<template>
  <div class="child">
    <!-- 模板中使用时,this不能省 -->
    <div>子组件:{{ this.parent.name }}</div>
    <button @click="print">打印响应式数据</button>
  </div>
</template>

<script>
  export default {
    name: 'Child',
    inject: ['parent'],
    methods: {
      print() {
        console.log(this.parent.name) // 方法中使用
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 2.以函数式的方式传入

提示

父组件中以函数式的方式提供依赖,后代组件中采用函数的方式调用。

// <!-- 父组件 -->
provide() {
  return {
    parentName: () => this.name
  }
}
1
2
3
4
5
6
<template>
  // <!-- 子组件 -->
  <div class="child">
    <!-- 模板中使用时,this不能省 -->
    <div>子组件:{{ this.parentName() }}</div>
    <button @click="print">打印响应式数据</button>
  </div>
</template>

<script>
  export default {
    name: 'Child',
    inject: ['parentName'],
    methods: {
      print() {
        console.log(this.parentName()) // 方法中使用时,以函数的方式调用
      }
    }
  }
</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

相关文章:

VUE2中的依赖注入provide/inject如何实现响应式? (opens new window)

编辑 (opens new window)
上次更新: 2023/04/01, 15:26:22
响应式细节
EventBus

← 响应式细节 EventBus→

最近更新
01
KnockoutJS
11-12
02
综述
10-17
03
前言
10-12
更多文章>
Theme by Vdoing | Copyright © 2019-2024 MarginLon | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式