vue3的 script setup 基本使用

1.defineProps 用来接收父组件传来的 props

2.defineEmits 子组件向父组件事件传递

3.defineExpose 组件暴露出自己的属性,在父组件中可以拿到值或函数,父组件用ref接收即可
<template>
  <div class="about">
    <h1  @click="ziupdata" >绑定值msg:{{ msg }}</h1>
  </div>
</template>

<script lang="ts" setup>
//因为这里用了script的setup方式就用不到 defineComponent 这个定义组件的api了
import { useSlots, useAttrs, defineProps, onMounted, watchEffect, defineComponent,defineEmits } from 'vue';

// 跳路由用
import router from '@/router/index';
// 获取路由参数
import { useRoute } from 'vue-router';

const route = useRoute();
const slots = useSlots();
const attrs = useAttrs();

//获取子组件传的值
const props = defineProps({
  idq: String,
});

 //暴露出去的变量
  defineExpose({
    saveFn:()=>{do...},  //可以返回函数  
    ziname
  })

 //自定义函数,父组件可以触发
  const em=defineEmits(['updata'])
  const ziupdata=()=>{
    em("updata",'我是子组件的值')
  }

const msg = 1234;

onMounted(() => {
  console.log('onMounted:', 123444);
});

//watchEffect 会最先执行 自动收集里面的依赖更新调用
watchEffect(() => {
  console.log('watchEffect:', 3333);
});

//console.log(slots, attrs);
//console.log('props', props);
//console.log('route:', route.query);
</script>
// 如果用到ts 来接收 props 里面有两种写法,这是第一种,它可以自行推断接收的值是什么类型(对象除外)
const props = defineProps({
  page: { // 页码
    type: Number,
    default: 1
  },
  limit: { // 每页大小
    type: number,
    default: 10
  },
  loadList: { // 列表加载函数
    type: Function,
    default: () => {}
  },
  obj: { // 假如传过来一个对象
    type: Object as PropType<{ a: string, b: number }>,
    required: true // 必填项
  }
})
// 第二种写法,纯ts写法
interface PropsType {
  page: number,
  limit: number,
  loadList: () => void  
}
// 如果不需要写默认值的话,可以直接
const props = defineProps<PropsType>()
// 如果需要写默认值,只能调用提供的编译函数
const props = withDefaults(defineProps<PropsType>(), {
  page: 1,
  limit: 10,
  loadList: () => {}
})
// 但是自我感觉,还是第一种方法更为简介明了,具体选择哪种就是看个人喜好了

TS结合vue3的一些初级使用方法 - 知乎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值