情不知从何起,一往而情深
排名
6
文章
199
粉丝
4
评论
3
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue3中父子组件传值,传参。vue3 defineProps 传参默认值。方法调用

3713人阅读 2023/8/5 21:15 总访问:1110479 评论:0 收藏:0 手机
分类: 前端

1、父向子

父组件引用子组件的时候,在子组件上自定义一个属性,属性名随意 ,属性值是你要传的参数。

  1. <template>
  2. <div class="home">
  3. <HelloWorld :index="num" /> //子组件
  4. </div>
  5. </template>

然后在子组件代码script标签中,导入definePops 这个方法,定义一个常量props用来接收父组件传过来的值,就可以了。

  1. <script setup>
  2. import {ref ,defineProps} from "vue";
  3. const props = defineProps({
  4. index:{}
  5. })
  6. </script>

页面上这么使用:

  1. <template>
  2. <div class="hello">
  3. <h2>{{ index }}</h2>
  4. </div>
  5. </template>

如果有默认值可以这样

  1. const props = defineProps({
  2. schoolId: String,
  3. title: {
  4. type: String,
  5. default: "完成人次"
  6. },
  7. IsQueryMySelf: {
  8. type: Boolean,
  9. default: false
  10. },
  11. taskIds: {
  12. type: [] as any,
  13. default:[]
  14. }
  15. })

如果是转递的多个可以这样使用

传递:

  1. <OceanFreightTableEdit title="海运费" :isCanEditOceanFreight="ruleForm.isCanEditOceanFreight" ref="OceanFreightTableEditRef"></OceanFreightTableEdit>

接收

  1. const props = defineProps({
  2. title: String,
  3. isCanEditOceanFreight: Boolean
  4. })

取值:

  1. <el-checkbox v-if="props.isCanEditOceanFreight" checked="true" disabled="true" v-model="isCanEdit" size="default" />

取值直接可以这样:props.isCanEditOceanFreight,props.title这种。


注意:父向子传参数的时候要注意时机问题哦,比如要传递的某个参数要从接口里边查询回来,然后组件的加载要比接口数据返回回来之前被加载了,这样传递到组件里边的参数永远都是默认的参数,不会是从接口回来的参数,所以这种情况就要进行处理,可以考虑等接口返回回来了在去加载组件,或者在子组件里边去监听一下父组件传递参数的值的变化也可以。

2、子向父

在子组件声明一个任意常量,用于定义传输参数的方法,名字自定义。

  1. const emit = defineEmits(["updateNum"]);

同时在子组件中定义一个方法去触发emit这个方法,

  1. emit('updateNum',value) //value是传给父元素事件的参数

父组件中子组件标签上加一个方法,调用方法参数就是子组件传给父组件的参数

  1. <template>
  2. <div class="home">
  3. <HelloWorld @undataNum='getNum' :index="num" />
  4. </div>
  5. </template>
  6. <script>
  7. const getNum =(value)=>{
  8. console.log(value);//value为传过来的参数
  9. }
  10. </script>

子向父还有一种方法

在子组件中导入defineExpose方法,把你想要传的参数抛出去

  1. <script setup>
  2. import { ref, defineProps, inject, defineExpose } from "vue";
  3. const numPlus = ref(1);
  4. defineExpose({ numPlus});
  5. </script>

在父组件中子组件的标签上接收ref,名字自定义

  1. <HelloWorld :index="num" ref="treeRef" />

然后再页面直接打印就可以了

  1. console.log(treeRef.value.numPlus);

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

vue3,vue组件,props给一个对象参数vue组件间传参数vue父组件给子组件传参组件参数类型父组件调用子组件的方法vue组件事件监听,给子组件传递方法,子组件调用父组件方法

[TOC]组件可以使用props给组件传值,可以同时传递多个,可以是任意类型,比如字符串或者对象。 下面是个简单的例子: &lt...

vue3最基础的数据加载,表格table

vue3表格加载一点静态数据 &lt;template&gt; &lt;el-table :data=&quot;tableData&quot; style=&quot;width: 100%&quot...

vue3 Element Plus 表单输入框放到一行

当垂直方向空间受限且表单较简单时,可以在一行内放置表单。 通过设置 inline 属性为 true 可以让表单域变为行内的表单域...

vue3 Element ui Plus 表格 分页,vue3 el-pagination分页

其实就是el-pagination控件的使用而已 &lt;template&gt; &lt;div&gt; &lt;el-table :data=&quot;tableData&quot; ...

vue触发a标签的点击事件vue3 dom操作 触发点击事件 文件选择库只会触发一次change事件的问题

[TOC]vue触发a标签的点击事件直接操作dom节点的方式比较简单 &lt;button @click=&quot;handleBtnClick&quot;&gt;点击按钮&...

vue3 ref的使用多个ref的使用通过ref触发点击事件

多个ref获取的方法可以使用一样的,通过变量名来区分就行了 const vabUploadRef = ref() const multipleTableRef = ref() ...

vue elementui,vue3 element plus 文件上传的时候设置其他参数后台.net接收传递的额外参数图片上传

比如上传文件的时候额外传递两个select选择的值 前台前面上传文件的时候要提供默认参数很简单,el-upload绑定一个data即可...

vue,vue3 打开新页面,页面跳转vue跳转到一个新页面vue路由传参vue3路由传参vue3 获取路由参数

[TOC]VUE页面跳转本地页面跳转 goApplicationCenter() { //进行页面跳转 let path = &quot;/application-center&quo...

vuevue3组件封装,vue组件模板简单组件模板基础组件模板vue引入自定义的组件vue使用自定义的组件插槽slot使用vue封装格子效果,一块一块的grid布局效果

[TOC]vue封装组件的简单模板贴一个简单模板方便自定义组件的时候直接复制 &lt;template&gt; &lt;div class=&quot;app...

.net6 Signalr+vue3 的运用(上)

.net6 Signalr+Vue3 的运用(上)[TOC] 什么是 SignalR?ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加...

.net6 Signalr+vue3 的运用(下)

.net6 Signalr+Vue3 的运用(下)[TOC] 上篇链接:https://www.tnblog.net/hb/article/details/7961SignalR 中的用户 Sig...

.net6 Signalr+vue3 配合Ingress Nginx的运用

.net6 Signalr+Vue3 配合Ingress Nginx的运用[TOC] 结合上篇:https://www.tnblog.net/hb/article/details/7963 项目打...

vue3 Element Plus 表格使用vue3常用界面搭配vue3基础模板使用

一个简单的表格加时间搜索界面效果如下: 代码如下: &lt;template&gt; &lt;div class=&quot;app-container&quot;&g...

vue3 如何加prototypevue3使用globalProperties

在2.X版本中创建一个vue 实例是通过 new Vue()来实现的,到了3.X中则是通过使用createApp这个 API返回一个应用实例,并且可...