Vue3 props

embedded/2024/10/18 19:23:56/

组件与组件之间不是完全独立的,而是有交集的,组件与组件之间可以传递数据,通过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/embedded/126869.html

相关文章

并发——笔试面试总结

1. 进程之间通信的途径有哪些&#xff1f;并说一下他们的通信机制原理 进程间通信的途径包括管道、消息队列、共享内存、信号量、套接字等&#xff0c;以下是几种常见的进程间通信方式及原理&#xff1a; (1) 管道(Pipe) 通信机制原理&#xff1a;管道是一种半双工的通信方式&a…

PE结构之绑定导入表

打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…

需求管理工具Jama Connect:与Jira/Slack/GitHub无缝集成,一站式解决复杂产品开发中的协作难题

在产品和软件开发的动态世界中&#xff0c;有效协作是成功的关键。然而&#xff0c;团队往往面临着阻碍进步和创新的重大挑战。了解这些挑战并找到强有力的解决方案&#xff0c;对于实现无缝、高效的团队协作至关重要。Jama Connect就是这样一种解决方案&#xff0c;它是一个功…

在SpringBoot+VUE中 实现登录-RSA的加密解密

步骤-先理清楚在动手 前端首先调用后端的公钥接口,在前端加密密码传输至后端登录接口后端用私钥解密码拿着用户名去数据库查询出来的盐值加密的 密码1用私钥解密密码登录密码加盐值得到 密码2比较密码1与密码2,相同则登录成功&#xff0c;跳转首页&#xff5c;其他页面 前端实…

【回顾原生JDBC手动管理事务以及两种方式实现Spring编程式事务】

文章目录 一.关于事务1.事务概念2.事务四个基本特性3. 事务的生命周期4.事务的隔离级别5.事务的应用场景 二.回顾原生JDBC手动管理事务三.Spring编程式事务1.使用 TransactionTemplate 进行编程式事务管理2.使用 PlatformTransactionManager 进行编程式事务管理 四.编程式事务的…

开局一个登录框,密码重置全靠翻

一、开局获取登录框 挑选一个目标&#xff0c;直接来到它的统一信息门户 可以看到&#xff0c;框里直接提示默认用户名和密码&#xff0c;这不得来全部费功夫&#xff0c;只要找到个学号和身份证就能进到里面去特 二、震惊&#xff01;某校竟在公网放出学生这种信息 还是直接…

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是&#xff0c;它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如&#xff0c;一个微服务可以用Java编写&#xff0c;另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

HTML 事件

HTML 事件 HTML 事件是发生在 HTML 元素上的交互瞬间,它们可以由用户的行为(如点击、按键、鼠标移动等)或浏览器的行为(如页面加载、表单提交等)触发。在 HTML 和 JavaScript 的交互中,事件扮演着核心角色,允许开发者创建动态和响应式的网页。 常见的 HTML 事件 点击事…