首页 > 其他分享 >ts vue3 定义props写法参考

ts vue3 定义props写法参考

时间:2024-07-18 23:32:37浏览次数:13  
标签:arr console log default vue3 ts props type

写法1

export interface Config {
  arr1: Array<IObject>,
  obj1?: IObject
}

const props = defineProps({
  title: {
    type: String,
	//必须的prop
    required: true,
    default: 'Default Title'
  },
  //数组
  dicts: {
    type: Array,
    required: true,
    default: () => []
  },
  customClass: {
    type: String,
    default: ''
  },
  //对象
  config: {
    type: Object as PropType<Config>,
    default: () => ({
      arr1: [], obj1: {
        arr1: [],
        obj1: {
          id: 1,
          name: "test"
        }
      }
    })
  }
})

withDefaults 方式

<template>
  <div class="box">
    <div><i-ep-edit /></div>
    <div><i-ep-chat-dot-round /></div>
    <div><i-ep-close /></div>
  </div>
</template>
<script lang="ts" setup>
// import { ref, reactive, computed, onMounted, nextTick } from 'vue';

interface Props {
  arr: Array<{ name: string }>;
  arr2: Array<{ name: string }>;
  my: string;
  it: number;
}
const props = withDefaults(defineProps<Props>(), {
  arr: () => [], //object对象得函数方式返回,不能直接给空数组,原因是类型限定就是得函数的方式传回object对象数据
  // type NativeType = null | number | string | boolean | symbol | Function;
  // type InferDefault<P, T> = ((props: P) => T & {}) | (T extends NativeType ? T : never);
  my: "",
});

const { arr, arr2, my, it } = props;

console.log(arr, "arrslfkjslfjslf"); //[], 说明default默认值设置是有效的
console.log(arr2, "arr2slkdfjlskfjlksjfksjd"); //undefined ,没设置默认值就是undefined

console.log(my, "myslkdfjsldfjsldfjsldfjsldf"); // "", 说明default默认值设置是有效的

console.log(it, "itslkdfjsldfjsldfjsldfjsldf"); // undefined, 没设置默认值就是undefined
arr.map((i) => {
  console.log(i.name, "slndvsldjslfkjskf");
});
</script>
<style lang="stylus" scoped></style>

标签:arr,console,log,default,vue3,ts,props,type
From: https://www.cnblogs.com/jocongmin/p/18310589

相关文章

  • vue3 使用component is 动态组件
    使用方式父组件<template><divclass="box"><div><!--setup需要用变量的方式来写入is,如果是optionsapi方式可以用组件字符--><!--myProps属性可以直接传到动态组件--><component:is="childT"myProps="sldfjsklfjksf......
  • requests, BeauitfulSoup
    requestsrequests.get()的基本使用#导入importrequests#不带参数getreponse=requests.get('url')#带参数getheaders={'referer':'http://xxxxxx.net/','user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64;r......
  • vue3 watch watchEffect computed 使用差别
    概论watch监听明确的数据computed监听数据并返回计算结果watchEffect重视监听过程测试代码子组件<template><divclass='box'><div>props监听测试</div>computed返回的内容的深度属性:{{configTwo.obj1&&configTwo.obj1.xxx}}<div></div......
  • Vue3动态生成组件
    在Vue3中,要遍历funConfig并动态生成组件,可以使用Vue的defineAsyncComponent来加载异步组件,并结合v-for指令在模板中进行渲染。以下是一个示例代码来实现这个需求:1.配置文件确保配置文件导出的是一个reactive对象:import{reactive}from'vue';exportconst......
  • Visible and Clear: Finding Tiny Objects in Difference Map
    VisibleandClear:FindingTinyObjectsinDifferenceMap论文链接:https://arxiv.org/abs/2405.11276项目链接:https://github.com/Hiyuur/SR-TOD(ECCV2024)Abstract微小目标检测是目标检测领域的关键问题之一。大多数通用检测器的性能在微小目标检测任务中显著下降......
  • Vue3学习---1
    Vue3学习1.初识Vue1.1HelloWorld程序<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><ti......
  • npm/yarn/pnpm install失败:ERR_PNPM_NO_VERSIONS No versions available for uWebSock
    ERR_PNPM_NO_VERSIONS NoversionsavailableforuWebSockets.js.Thepackagemaybeunpublished.我在新项目中想要切换包管理器从yarn到pnpm的时候,删除node_modules和yarn.lock之后,pnpminstall竟然提示这个包可能没发布。我觉得这个不可能,都需要使用了,怎么可能没发......
  • FastStone Capture v10.6 解锁版 (一款优秀的支持屏幕录制、滚动截图、高清长图、图片
    前言FastStoneCapture是一款极简主义的应用程序,它简单易用,可以捕捉屏幕上的任意区域,提供多种捕获模式,包括活动窗口、指定窗口/对象、矩形区域、手绘区域、整个屏幕和滚动窗口等。此外,FastStoneCapture还附带屏幕录像机、放大镜、取色器和标尺等辅助功能。其体积小巧,但功能强......
  • ArkTS的基本组成
    装饰器:用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新UI描述:以声明式的方式来描述UI的结构,例如bu......
  • 华为云DTSE助力悦知技术架构升级、打破业务瓶颈
    本文分享自华为云社区《悦知技术架构升级,打造一站式数字教育平台,加速企业提效创新》,作者:HuaweiCloudDeveloper。改善传统技术架构——实现数字化转型悦知是国内领先的数字教育产品与解决方案提供商,专注教育行业信息化深度耕耘10余年,是教育行业+IT技术深度融合解决方案的最佳......