作用

  • 在祖先组件中使用 provide 标记的变量可以被所有后代访问,无论多少层
  • 在后代组件中使用 inject 可以访问到变量

    示例

  • 祖先组件

    1. <script lang="ts">
    2. import { provide, ref } from 'vue'
    3. export default {
    4. name: 'App',
    5. setup(){
    6. const menuVisible = ref(true)
    7. provide('menuVisible',menuVisible) // 类似于 setter
    8. }
    9. }
    10. </script>
  • 后代组件

    1. <script lang="ts">
    2. import { inject, Ref } from "vue";
    3. export default {
    4. setup() {
    5. const menuVisible = inject<Ref<boolean>>("menuVisible");
    6. // 类似于 getter //<Ref<boolean>> 标明类型
    7. const toggleMenu = () => {
    8. menuVisible.value = !menuVisible.value;
    9. };
    10. return { toggleMenu };
    11. },
    12. };
    13. </script>