zoukankan      html  css  js  c++  java
  • vue3-provide/inject 注入

    为深度嵌套的组件,父组件provide提供数据来源,子组件inject开始使用这个数据

    provide: {
        todoLength: this.todos.length // 将会导致错误 'Cannot read property 'length' of undefined`
    },
    //要访问组件实例,需要将provide转换为返回对象函数
    provide() {
        return {
          todoLength: this.todos.length
        }
      },

    setup中使用

    import { provide } from 'vue' //显式导入
    import MyMarker from './MyMarker.vue
    
    export default {
      components: {
        MyMarker
      },
      setup() {
        provide('location', 'North Pole')
        provide('geolocation', {
          longitude: 90,
          latitude: 135
        })
      }
    }
    //使用
    <script>
    import { inject } from 'vue'
    
    export default {
      setup() {
        const userLocation = inject('location', 'The Universe')
        const userGeolocation = inject('geolocation')
    
        return {
          userLocation,
          userGeolocation
        }
      }
    }
    </script>
    //增加响应,使用ref, reactive 如果任何一个属性发生变化,该MyMarker组件也将自动更新
    <!-- src/components/MyMap.vue -->
    <template>
      <MyMarker />
    </template>
    
    <script>
    import { provide, reactive, ref } from 'vue'
    import MyMarker from './MyMarker.vue
    
    export default {
      components: {
        MyMarker
      },
      setup() {
        const location = ref('North Pole')
        const geolocation = reactive({
          longitude: 90,
          latitude: 135
        })
    
        provide('location', location)
        provide('geolocation', geolocation)
      }
    }
    </script>
  • 相关阅读:
    k8s之创建etcd集群
    完美解决微信video视频隐藏控件和内联播放问题
    JS工具库封装:Video转换成Canvas
    H5 video 标签 播放事件
    iSlider 如丝般高性能H5全屏滑动组件
    设计模式之 适配器模式
    c++ STL常用算法使用方法
    快速排序与二分查找
    CLOSE_WAIT TIME_WAIT
    erlang erl文件编译的三种脚本
  • 原文地址:https://www.cnblogs.com/chenzxl/p/14441808.html
Copyright © 2011-2022 走看看