Vue3 props

ops/2024/10/18 19:43:12/

组件与组件之间不是完全独立的,而是有交集的,组件与组件之间可以传递数据,通过props属性可以让子组件接收父组件传递过来的数据。

以父组件-App.vue,子组件-Person.vue为例:

将子组件当作HTML中的标签一样,可以设置属性等。

在传递时需要使用:var进行绑定,就是v-bind:var

结合TS语法,在src/types目录下创建TS文件,定义接口:

// 接口
export interface PersonProps {name: string;age: number;}// 一个自定义类型
export type Persons = Array<PersonProps>;

在组件中导入时需要注意:对于类型的来说,需要使用type进行声明:

import {type Persons } from '@/types/PersonInter';

@表示根目录 - src,从上往下寻找。

父组件内容:

<template><div id="app"><Person :a="3" :list="personList" /></div>
</template><script lang="ts" setup>import Person from './components/Person.vue';import { ref, onMounted, reactive } from 'vue';import {type Persons} from '@/types/PersonInter';let personList = reactive<Persons>([{name: '张三', age: 18},{name: '李四', age: 20},{name: '王五', age: 22}
]);
</script><style scoped>.app {background-color: aqua;box-shadow: 0 0 10px rgba(0,0,0,0.1);}
</style>

使用接口,需要声明响应式数据时,可以使用reactive<VarType>(),用泛型表示

子组件内容:

  • 仅接收

    <template><div class="person"><ul><li v-for="v in list" :key="v.name">{{ v.name }}, {{ v.age }}</li></ul></div>
    </template><script lang="ts" setup name="Person">
    import { defineProps, withDefaults } from 'vue';
    import {type Persons } from '@/types/PersonInter';defineProps(['list'])
    </script>
    
  • 接收 + 限制

    <template><div class="person"><ul><li v-for="v in list" :key="v.name">{{ v.name }}, {{ v.age }}</li></ul></div>
    </template><script lang="ts" setup name="Person">
    import { defineProps, withDefaults } from 'vue';
    import {type Persons } from '@/types/PersonInter';defineProps<{list:Persons}>()
    </script>
    
  • 接收 + 限制类型 + 指定默认值 + 限制必要性

    <template><div class="person"><ul><li v-for="v in list" :key="v.name">{{ v.name }}, {{ v.age }}</li></ul></div>
    </template><script lang="ts" setup name="Person">
    import { defineProps, withDefaults } from 'vue';
    import {type Persons } from '@/types/PersonInter';withDefaults(defineProps<{list?:Persons}>(),{list:()=>[{name:'张三',age:18}]
    })
    </script>
    

http://www.ppmy.cn/ops/126546.html

相关文章

Unity3D 物体表面水滴效果详解

在游戏开发中&#xff0c;逼真的水滴效果能够显著提升游戏场景的真实感和沉浸感。Unity3D作为一款强大的游戏开发引擎&#xff0c;提供了丰富的工具和技术来实现这种效果。本文将详细介绍如何在Unity3D中实现物体表面的水滴效果&#xff0c;包括技术详解和代码实现。 对惹&…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者&#xff1a;元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入&#xff0c;用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验&#xff08;UX&#xff09;场景的复杂性&#xff0c…

20201017-【C、C++】跳动的爱心

效果图片 代码 #include "graphics.h" #include <conio.h> #include <time.h> #include <math.h> #include <stdlib.h>struct Point {double x, y;COLORREF color; };COLORREF colors[256] {RGB(255,32,83),RGB(252,222,250),RGB(255,0,0)…

vue3之生命周期钩子

Vue 组件实例生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c…

机器学习_线性回归_线性回归过拟合和欠拟合+正则化线性模型学习总结

线性回归的缺陷--欠拟合和过拟合 欠拟合: 简介 训练集和测试集表现都不怎么样, 模型太简单 产生原因: 学习到的特征太少 改进方法: 1.添加其他特征 组合 泛化 相关性 上下文特征,平台特征等 2.添加多项式特征, 将低次项模型变成高次项模型 过拟合: 简介 原始特征过多,存在嘈杂特…

【python】数据容器:dict(字典、映射)

目录 数据容器入门数据容器&#xff1a;list&#xff08;列表&#xff09;list&#xff08;列表&#xff09;的遍历数据容器&#xff1a;tuple&#xff08;元组&#xff09;数据容器&#xff1a;str&#xff08;字符串&#xff09;数据容器的切片数据容器&#xff1a;set&…

G-Set(增长集合,Grow-Only Set)

一、概念 G-Set&#xff08;增长集合&#xff0c;Grow-Only Set&#xff09;是一种冲突自由复制数据类型&#xff08;Conflict-Free Replicated Data Type, CRDT&#xff09;&#xff0c;用于在分布式系统中同步和合并数据&#xff0c;而不需要中央协调器。G-Set 支持两种操作…

LLM - 使用 Neo4j 可视化 GraphRAG 构建的 知识图谱(KG) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142938982 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Neo4j …