高级vue setup 中provide和inject用法

父组件

<script>
import { computed, provide, watch } from 'vue'
import {ref,reactive,toRefs} from 'vue'
import father from './components/father.vue'
export default{
    setup() {
        let data = reactive({
            mes: 'adssss',
            userObj: {
                userName: "www.96net.com.cn"
            },
        });


        provide('name', data.mes)

        const add = () => {
            data.mes++;
            console.log(data.mes);
        };
        watch(() => data.mes, (newvalue, oldvlaue) => {
            console.log("n" + newvalue);
            console.log("o" + oldvlaue);
        });
 
        return {
            ...toRefs(data),
            add,
        };
    },
    components: { father}
}
</script>

<template>
  <div id="as">
    {{mes}}
    <br>
  </div>
  <button @click="add">+</button>
  <hr>
  <father></father>
</template>

<style scoped>

</style>
 
子组件
<template>
    www.96net.com.cn
    {{ name }}
  </template>
 
  <script>
  import { inject } from 'vue'
  export default {
    setup() {
      const name = inject('name')
      return {
        name
      }
    }
  }
  </script>
posted @ 2022-10-05 20:08  学无边涯  阅读(133)  评论(0编辑  收藏  举报