React组件(进阶--children/props)

本文深入探讨React组件的children属性,介绍其用法及可接受的类型。同时,阐述props校验的重要性,提供实现步骤和代码示例,包括使用prop-types库进行类型检查,并详细讲解四种常见校验规则。此外,还讲解了如何为组件设置默认props,分别展示了函数组件和类组件的默认值设置方法。最后,推荐了一系列React入门教程,帮助开发者提升技能。
摘要由CSDN通过智能技术生成

目录

1.children属性

1)children属性是什么

2)children可以是什么

2. props校验-场景和使用

实现步骤:

相关代码:

3.props校验-规则说明

四种常见结构:

相关代码:

4.props校验-默认值 

1)函数组件 :直接使用函数参数默认值

2)类组件:使用类静态属性声明默认值,static defaultProps = {}

文章推荐:

1.创建React项目(入门保姆级) 

2.JSX基础(入门)

3.React组件(入门) 

4.React组件动状态(入门) 

5.React组件通信(入门) 


1.children属性

        1)children属性是什么

        表示该组件的子节点,只要组件内部有子节点,props中就有该属性

        2)children可以是什么

        普通文本,普通标签元素,函数 / 对象,JSX

例:

function Father({children}) {
	const childrenContent = React.Children.map(children, (child, index) => {
      return <p>{child}-{index}</p>;
    });
    return(
      <div>
      {childrenContent}
      </div>    
    )        
 }

<Father>
    <p>666</p>
</Father>

2. props校验-场景和使用

对于组件来说,props是由外部传入的,我们其实无法保证组件使用者传入了什么格式的数据,如果传入的数据格式不对,就有可能会导致组件内部错误,有一个点很关键 - 组件的使用者可能报错了也不知道为什么,看下面的例子 

        面对这样的问题,如何解决? props校验 

        实现步骤:

                1)安装属性校验包:yarn add prop-types

                2)导入 prop-types

                3)使用 组件名.propTypes = {} 给组件添加校验规则

        相关代码:

import PropTypes from 'prop-types'

const List = props => {
  const arr = props.colors
  const lis = arr.map((item, index) => <li key={index}>{item.name}</li>)
  return <ul>{lis}</ul>
}

List.propTypes = {
  colors: PropTypes.array
}

3.props校验-规则说明

        四种常见结构:

                1)常见类型:array、bool、func、number、object、string

                2) React元素类型:element

                3) 必填项:isRequired

                4)特定的结构对象:shape({}) 

        相关代码:

// 常见类型
optionalFunc: PropTypes.func,
// 必填 只需要在类型后面串联一个isRequired
requiredFunc: PropTypes.func.isRequired,
// 特定结构的对象
optionalObjectWithShape: PropTypes.shape({
	color: PropTypes.string,
	fontSize: PropTypes.number
})

 官网相关文档:Typechecking With PropTypes – React

4.props校验-默认值 

通过 defaultProps 可以给组件的props设置默认值,在未传入props的时候生效 

        1)函数组件 :直接使用函数参数默认值

function List({pageSize = 10}) {
  return (
    <div>
      此处展示props的默认值:{ pageSize }
    </div>
  )
}

// 不传入pageSize属性
<List />

         2)类组件:使用类静态属性声明默认值,static defaultProps = {}

class List extends Component {
  static defaultProps = {
    pageSize: 10
  }
  render() {
    return (
      <div>
        此处展示props的默认值:{this.props.pageSize}
      </div>
    )
  }
}
<List />

文章推荐:

        1.创建React项目(入门保姆级) 

        2.JSX基础(入门)

        3.React组件(入门) 

        4.React组件动状态(入门) 

        5.React组件通信(入门) 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值