<template> <div class="container"> </div> <el-dialog v-model="dialogFormVisible" :title="dialogTitle"> <div> <p>这是组件 B,获取到的参数为:{{ppgod}}</p> </div> </el-dialog> </template> <script lang="ts" setup> import {useRoute} from "vue-router"; import {provide} from "vue"; const dialogFormVisible = false//设置弹窗不显示 const ppgod = useRoute().query.zh; provide('ppgod',ppgod) </script>传值会出现错误吗
时间: 2023-12-07 11:05:56 浏览: 220
这段代码可能会出现错误,因为 provide 的值是在 setup 函数中设置的,而 setup 函数只有在组件实例化之前调用一次。这意味着在 setup 函数之后调用 provide 的其他代码无法访问已提供的值。
在这种情况下,建议将提供值的代码移动到组件的 setup 函数之外,并将提供值的代码放在组件的生命周期钩子函数中。例如,可以在 mounted 钩子函数中提供值,如下所示:
```html
<template>
<div class="container">
<el-dialog v-model="dialogFormVisible" :title="dialogTitle">
<div>
<p>这是组件 B,获取到的参数为:{{ppgod}}</p>
</div>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { useRoute } from "vue-router";
import { inject } from "vue";
const ppgod = useRoute().query.zh;
// 不要在 setup 函数中提供值
// provide('ppgod',ppgod)
</script>
<script lang="ts">
export default {
data() {
return {
dialogFormVisible: false,
dialogTitle: "Dialog Title",
};
},
mounted() {
// 在 mounted 钩子函数中提供值
provide("ppgod", this.ppgod);
},
inject: ["ppgod"],
};
</script>
```
在这个示例中,将提供值的代码移动到了 mounted 钩子函数中,并使用 inject 在组件中访问这个值。这样就可以避免在 setup 函数中提供值而导致的访问问题。
阅读全文
相关推荐








我找到了如下代码,该如何去掉弹框<template> 欢迎使用 <el-form :model="form" :rules="rules" ref="formRef"> <el-form-item prop="username"> <el-input prefix-icon="el-icon-user" placeholder="请输入账号" v-model="form.username"></el-input> </el-form-item> <el-form-item prop="password"> <el-input prefix-icon="el-icon-lock" placeholder="请输入密码" show-password v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button style="width: 100%; background-color: #333; border-color: #333; color: white" @click="login">登 录</el-button> </el-form-item> </el-form> <el-dialog title="郑重声明" :visible.sync="dialogVisible" :show-close="false" width="40%" :close-on-click-modal="false" destroy-on-close> 本平台已经对本项目申请了软件著作权,完善了所有该项目资源相关的法律文件材料。 本平台付费用户可以学习该项目自己使用,禁止在其他平台做转手或者倒卖,禁止在私域未经授权分享源码,禁止上传代码到github、gitee、gitlab等代码托管平台。 我们公司的法务会在各大平台(例如:闲鱼、小红书、B站、CSDN等社交媒体平台)不定期检索, 一旦发现倒卖或转手的现象,我们会第一时间收集好证据,向你发送律师函。 现在互联网所有账号都是实名制,我们可以明确追溯到你。请大家不要做违法的事情,不要因为一时糊涂给自己的人生轨迹抹上一层黑。 本项目唯一官方平台:项目实战网(https://www.javaxmsz.cn) <el-butt









