vue3 组件相互传值 ,父子传值,组件传值

思路: A是组件,在B页面调用,使用v-if来销毁组件,在B向A传值,A事件后再向B传值

接下来小张(张贵顺)给大家上代码

学习,编程社区,UI设计天梦星官网 (tmxkj.top)

  1. A  页面(组件) 完整代码(使用了/element-plus)的组件
<template>
  <el-dialog
      v-model="data.fileDialogShow"
      title="Warning"
      width="30%"
      align-center
  >
    <span>Open the dialog from the center from the screen</span>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="data.fileDialogShow=false">取消</el-button>
        <el-button type="primary" @click="sendFileList()">添加</el-button>
      </span>
    </template>
  </el-dialog>
</template>

<script lang="ts" setup>
import {onMounted, ref, watch} from "vue";

const props = defineProps<{ fileList:any }>();//接收外部传过来的值(接收)
const Emit = defineEmits(["receiveFile"]);//定义外部的函数 向外界传值(确定按钮)

const data=ref({
  fileDialogShow:true,//模态默认展开
  fileList:props.fileList,//文件列表
})
watch(()=>data.value.fileDialogShow,(newValue,oldValue)=>{
  if (newValue==false){sendFileList(false)}
})//监听数据变化

onMounted(()=>{
 console.log(data.value.fileList)
})

/**
 * @param {{提交发送文件数据}}
 */
const sendFileList = (e) => {
  if (e==false){
    Emit("receiveFile", e)
  }else {
    Emit("receiveFile", "ddd")
  }

}
</script>

<style scoped>

</style>

2.B页面,完整代码

<template>
  <el-button @click="openFileDialog()">新增</el-button>
  <div v-if="data.openFileDialog" >
     <file-dialog :file-list="data.fileList"  @receiveFile="receiveFile"  />
  </div>
</template>

<script  setup>
	import {Calendar, Search} from '@element-plus/icons-vue'
  import {ref, onMounted, watch} from 'vue'
  import FileDialog from "./fileDialog.vue";
  const data=ref({
   
    fileList:'',//文件列表
    openFileDialog:false,//文件模态是否展开
  })//数据源

  /**
   * @param{{打开组件,并传值}}
   */
  const openFileDialog=()=>{
    data.value.fileList="444"
    data.value.openFileDialog=true
 }
  /**
   * @param{{接收组件传过来的值}}
   */
  const receiveFile = (e) => {
    if(e==false){data.value.openFileDialog=false}//销毁组件
    else {
      console.log(e)
      data.value.openFileDialog=false
    }
  }
</script>

大功告成!!

前端综合网 开发者  天梦星编程社区链接  天梦星官网 (tmxkj.top)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值