17-依赖注入provide/inject
<template>
<div class="App">
<h1>我是根组件</h1>
<A></A>
</div>
</template>
<script setup lang="ts">
import A from '../components/Mix/A.vue'
import { provide, ref, reactive } from 'vue'
//provide 是一个函数(key, value)
provide('flag', false) //这个不是响应式的
provide('test', ref(false)) //可以使用ref reactive
</script>
<style lang="less" scoped>
.App {
width: 300px;
height: 300px;
background: red;
color: #fff;
}
</style>
<template>
<div class="A">
<h1>我是A组件</h1>
{{ data }} {{ data1 }}
<B></B>
</div>
</template>
<script setup lang="ts">
import B from './B.vue'
import { inject } from 'vue';
let data = inject('flag')
let data1 = inject('test')
</script>
<style lang="less" scoped>
.A {
width: 250px;
height: 250px;
background: blue;
color: #fff;
}
</style>
<template>
<div class="B">
<h1>我是B组件</h1>
{{ data }}
<div @click="changeTest">change test</div>
{{ data1 }}
</div>
</template>
<script setup lang="ts">
import { inject, Ref, ref } from 'vue';
let data = inject('flag')
let data1 = inject<Ref<boolean>>('test', ref(false))
const changeTest = () => {
data1.value = !data1.value //响应式会改变所有引用处的值
}
</script>
<style lang="less" scoped>
.B {
width: 200px;
height: 200px;
background: green;
color: #fff;
}
</style>
枫依流水: 通过你的方式,问题解决了。谢了。 导致原因:只安装style-resources-loader,还需要安装vue-cli-plugin-style-resources-loader
dong553444843: 你好,你的问题解决了吗,我也报这个错
X6ix9ineOkey: 官网有
是酸奶呀zZ: 您的文章解决了我困扰多日的烦恼 万分感谢
qimkkx: 你好请问你知道触发这个错误的原因了吗?我现在也突然就报错,但是找不到这个错误的原因