提供引用以将其注入到带有Vue js的子组件中

syqv5f0l  于 2022-11-17  发布在  Vue.js
关注(0)|答案(2)|浏览(140)

任何人都知道如何provide引用子组件。例如:
Parent组件提供参考:

<template>
  <div ref="myRef" />
</template>

<script>
export default {
  name: 'SearchContainer',
  provide: {
    parentRef: this.$refs.myRef
  }
}
</script>

</style>

Child组件注入它:

<template>
  <div />
</template>

<script>
export default {
  name: 'SearchContainer',
  inject: ['parentRef']
}
</script>

</style>
6kkfgxo0

6kkfgxo01#

通常,父组件和子组件之间的交互应该使用道具和发出的事件来完成:

<template>
  <div />
</template>

<script>
export default {
 
  methods:{
      changeParentStyle(){
            this.$emit('change-style')
       }
  }
}
</script>

</style>

父母:

<template>
  <child @change-style="changeStyle" />
</template>

<script>
export default {
  name: 'SearchContainer',
   methods:{
      changeStyle(){
          //change the property that affects your style
       }
   }
}
</script>

</style>
xmq68pz9

xmq68pz92#

我已经设法做到了为孩子们提供参考。但在我看来,如果你想在父母和孩子之间进行交流,我想你已经得到了布萨杰拉·布拉希姆的答案。
仍然提供参考有它自己的用例。我用它来对话。
下面是我的解决方案:

<!-- Parent Component -->

<template>
    <div ref="myRef"></div>
  </template>
  
<script>
  export default {
    name: 'SearchContainer',
    methods:{
        getMyRef(){
            return this.$refs.myRef
        }
    },
    provide() {
      return{
        parentRef: this.getMyRef
    }
    }
  }
</script>

<!-- Child Component -->

<template>
    <div></div>
</template>

<script>
  export default {
    name: 'SearchContainer',
    methods:{
        useRef(){
            this.parentRef().data // Can access data properties
            this.parentRef().method() // can access methods
        }
    }
    inject: ['parentRef']
  }
</script>

相关问题