• React--props深入


    1.children属性

    表示组件标签的子节点。当组件标签有子节点时,props就会有该属性。子节点可以传入各种类型的数据(文本、React元素、组件、甚至是函数)

    1. const Hello = props=>{
    2. return(
    3. <div>
    4. 组件的子节点:{props.children}
    5. div>
    6. )
    7. }
    8. ReactDOM.render(<Hello>我是子节点Hello>,//调用的是父组件
    9. document.getElementById('root'))
    1. const Test = ()=>{
    2. return(
    3. <button>我是Test组件button>
    4. )
    5. }
    6. const Hello = props=>{
    7. return(
    8. <div>
    9. 组件的子节点:{props.children}
    10. div>
    11. )
    12. }
    13. ReactDOM.render(<Hello><Test/>Hello>,//调用的是父组件
    14. document.getElementById('root'))

    1. const Hello = props=>{
    2. console.log(props)
    3. props.children()
    4. return(
    5. <div>
    6. 组件的子节点:{props.children}
    7. div>
    8. )
    9. }
    10. ReactDOM.render(<Hello>{()=>console.log('这是一个函数子节点')}Hello>,//调用的是父组件
    11. document.getElementById('root'))

     

     2.1props校验

    • 对于组件来说,props是外来的,无法保证组件使用者传入什么格式地数据
    • 如果传入的数据格式不对,可能会导致组件内部报错、
    • 关键问题:组件的使用者不知道明确的错误原因
    1. //小明创建的组件
    2. const App =props=>{
    3. const arr =props.colors
    4. const lis = arr.map((item,index)=>
    5. <li key={index}>{item}li>)
    6. return(
    7. <ul>{lis}ul>
    8. )
    9. }
    10. //小红创建组件App
    11. <App colors={19}/>

    2.2什么是props检验

    • props校验:允许在创建组件的时候,就指定props的类型、格式等
    • 作用:捕获使用组件时因为props导致的错误,给出明确的错误提示,增加组件的健壮性

    2.3props校验使用步骤

    • 安装包npm i prop-types
    • 导入:prop-types包
    • 使用组件名.propType={}来给组件的props添加校验规则
    1. //小明创建的组件
    2. const App =props=>{
    3. const arr =props.colors
    4. const lis = arr.map((item,index)=>
    5. <li key={index}>{item}li>)
    6. return(
    7. <ul>{lis}ul>
    8. )
    9. }
    10. App.PropTypes={
    11. //约定colors属性为array类型
    12. //如果类型不对,则报出明确错误,便于分析错误
    13. colors:PropTypes.array
    14. }
    15. ReactDOM.render(<App colors={19}/>,//调用的是父组件
    16. document.getElementById('root'))

    2.3props约束规则

    • 常见类型:array、bool、func、number、object、string
    • React元素类型:element
    • 必填项:isRequid
    • 特定结构的对象:shape({})
    1. //小明创建的组件
    2. const App =props=>{
    3. const arr =props.colors
    4. const lis = arr.map((item,index)=>
    5. <li key={index}>{item}li>)
    6. return(
    7. <ul>{lis}ul>
    8. )
    9. }
    10. App.PropTypes={
    11. //约定colors属性为array类型
    12. //如果类型不对,则报出明确错误,便于分析错误
    13. colors:PropTypes.array,
    14. a:PropTypes.number,
    15. fn:PropTypes.func.isRequired,//设置函数为必填项
    16. tag:PropTypes.element,
    17. filter:PropTypes.shape({
    18. area:PropTypes.string,
    19. price:PropTypes.number
    20. })
    21. }
    22. ReactDOM.render(<App colors={['red','green','blue']}/>,//调用的是父组件
    23. document.getElementById('root'))

    报错:

     3.props的默认值

    作用:给props设置默认值,在未传入props时生效

    1. const App =props=>{
    2. const arr =props.colors
    3. const lis = arr.map((item,index)=>
    4. <li key={index}>{item}li>)
    5. return(
    6. <ul>{lis}ul>
    7. )
    8. }
    9. App.defaultProps={
    10. colors:['red','green','blue']
    11. }
    12. ReactDOM.render(<App/>,//调用的是父组件
    13. document.getElementById('root'))

  • 相关阅读:
    Dockerfile构建SpringBoot项目
    [vue2项目]vue2+supermap[mapboxgl]+天地图之地图的基础操作(画线+自定义打点)
    景联文科技提供4D-BEV标注工具:提升自动驾驶感知能力的精准数据支持
    【FPGA】FPGA实现UART串口通信回环
    Audio Hijack for Mac 激活版:音频录制与处理软件
    Day33-Buffered处理流、对象处理流
    六面阿里天猫,已拿offer,我的面经复盘总结,原来进大厂没那么难了
    使用序列化技术保存数据 改进 IO流完成项目实战水果库存系统
    ES修改字段的数据类型
    如何使用 ArcGIS Pro 快速为黑白地图配色
  • 原文地址:https://blog.csdn.net/weixin_53052268/article/details/126025435