• 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'))

  • 相关阅读:
    如何选择期权开户平台,考虑手续费和保证金问题?
    06c++呵呵老师【FPS实现游戏角色】
    模型机微程序控制器
    开源大模型正在“杀死”闭源?
    全面解读视频生成模型Sora
    运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出
    Scala基础【常用方法补充、模式匹配】
    【Python面向对象进阶⑥】——元类
    SQL ZOO —— 6 JOIN
    Spring基础3——AOP,事务管理
  • 原文地址:https://blog.csdn.net/weixin_53052268/article/details/126025435