PropTypes.element是什么意思

本文介绍如何在React中使用propTypes属性进行组件Props类型的检查,确保组件接收正确的参数类型。通过实例展示如何限制组件只能接收单个子元素。

对Component设置propTypes属性,可以为Component的props属性进行类型检查。

使用 PropTypes.element 你可以指定只有一个子元素可以被传递给组件

源自:https://www.jianshu.com/p/2896acb5746b

 

 //将children限制为单个子元素。
Greeting.propTypes = {
  name: PropTypes.string,
  children: PropTypes.element.isRequired
};
 //传了两个子元素给组件Greeting那么,控制台会出现警告
<Greeting name={'world'}>
      <span>子元素1</span>
      <span>子元素2</span>
 </Greeting
import ja from 'element-plus/es/locale/lang/ja' <template> <div :class="{ hidden: hidden }" class="pagination-container"> <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :background="background" :layout="layout" :page-sizes="pageSizes" :pager-count="pagerCount" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </template> <script setup name="Pagination" lang="ts"> import { scrollTo } from '@/utils/scroll-to'; import { propTypes } from '@/utils/propTypes'; const props = defineProps({ total: propTypes.number, page: propTypes.number.def(1), limit: propTypes.number.def(20), pageSizes: { type: Array<number>, default: () => [10, 20, 30, 50] }, // 移动端页码按钮的数量端默认值5 pagerCount: propTypes.number.def(document.body.clientWidth < 992 ? 5 : 7), layout: propTypes.string.def('total, sizes, prev, pager, next, jumper'), background: propTypes.bool.def(true), autoScroll: propTypes.bool.def(true), hidden: propTypes.bool.def(false), float: propTypes.string.def('right') }); const emit = defineEmits(['update:page', 'update:limit', 'pagination']); const currentPage = computed({ get() { return props.page; }, set(val) { emit('update:page', val); } }); const pageSize = computed({ get() { return props.limit; }, set(val) { emit('update:limit', val); } }); function handleSizeChange(val: number) { if (currentPage.value * val > props.total) { currentPage.value = 1; } emit('pagination', { page: currentPage.value, limit: val }); if (props.autoScroll) { scrollTo(0, 800); } } function handleCurrentChange(val: number) { emit('pagination', { page: val, limit: pageSize.value }); if (props.autoScroll) { scrollTo(0, 800); } } </script> <style lang="scss" scoped> .pagination-container { .el-pagination { float: v-bind(float); } } .pagination-container.hidden { display: none; } </style> 它是这样的,我想把显示的文字转为日文(里面直接用的封装好的中文,我没办法直接改
最新发布
08-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值