【React】属性默认值和类型校验

Component – React 中文文档

prop-types - npm (npmjs.com)

React.PropTypes已移入另一个包中。因此首先我们需要安装 prop-types 库。

npm install --save prop-types

主要用法:

  • 常规校验
  • 自定义校验
  • 数组(对象)校验
  • 插槽校验
  • 属性默认值
  • 节点、元素等其他校验
import ChildCom from "./components/ChildCom";


function App() {
  return (
    <div className="App">
      <h1>我是 App</h1>
        <ChildCom name={"jk-stu"} age={20} score={[11,22]} >
            <p>插入一些内容</p>
        </ChildCom>
        <ChildCom score={[11,22]} >
            <p>插入一些内容</p>
        </ChildCom>
    </div>
  );
}

export default App;
import React from 'react';
import PropTypes from "prop-types";

function ChildCom(props) {
    return (
        <div>
            这是子组件
           <div>姓名:{props.name} 年龄:{props.age}</div>
            <div>{props.children}</div>
        </div>
    );
}

// props 类型校验
ChildCom.propTypes = {
    // name: PropTypes.string,
    age: PropTypes.number,
    /**
     * 自定义校验规则
     * @param props 组件的props
     * @param propName 校验的属性名
     * @param componentName 组件的名称
     * @returns {Error}
     */
    name: function(props, propName, componentName) {
        if (!/-stu/.test(props[propName])) {
            return new Error(
                'Invalid prop `' + propName + '` supplied to' +
                ' `' + componentName + '`. Validation failed.'
            );
        }
    },
    /**
     * 数组类型校验
     * @param propValue 校验的属性值
     * @param key 校验的属性值在数组中的位置
     * @param componentName 组件的名称
     * @param location 校验的属性名在组件中的位置
     * @param propFullName 校验的属性名在组件中的完整名称 比如 score[2]
     * @returns {Error}
     */
    score: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) {
        if (typeof propValue[key] !== 'number') {
            return new Error(
                'Invalid prop `' + propFullName + '` supplied to' +
                ' `' + componentName + '`. Validation failed.'
            );
        }
    }),
    // 插槽校验 这里必须插入一个element
    children: PropTypes.element.isRequired
}
// props 设置默认值
// 但该用法即将移除
ChildCom.defaultProps = {
    name: '张三-stu',
    age: 18
}

export default ChildCom;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,你可以在React中使用DatePicker组件来设置默认值。你可以根据接口返回的日期数据来确定默认值。以下是几种方法可以实现这个目标: 1. 使用三元运算符:在DatePicker标签内使用三元判断来设置defaultValue属性。例如,你可以使用useState来设置一个名为Info的状态变量,然后根据Info.time的值来确定DatePicker的默认值。 = useState({}); <DatePicker defaultValue={Info.time === null ? moment() : Info.time } format="YYYY-MM-DD" /> ``` 2. 使用initialValue属性:在Item标签中使用initialValue属性来设置DatePicker的默认值。你可以根据接口返回的数据来设置initialValue。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Antd Datepicker设置默认值不生效](https://blog.csdn.net/wangzhe123_/article/details/120162186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [React antd使用踩坑总结1](https://blog.csdn.net/CD2N_Queen/article/details/127806305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值