react基础学习(二)

react进阶

chilren属性

表示该组件的子节点,只要组件内部有子节点,props中就有该属性,其中可以是普通文本、普通标签元素、函数/对象、JSX等

只要你在组件内部写有内容,他就会出现在props的chilren属性中。

props校验

我们通常无法保证父组件传给子组件的数据是否符合我们需要的数据类型,当不存在ts语法给予错误判断时,若传入的数据格式不对,则会导致组件内部的错误。而这时,我们可以使用props校验,虽然比较鸡肋,还是更推荐tsx。

常见支持校验:

  1. 常见类型:array、bool、func、number、object、string
  2. React元素类型:element
  3. 必填项:isRequired
  4. 特定的结构对象:shape({})

实现步骤:

  • 安装属性校验包:yarn add prop-types
  • 导入prop-types
  • 使用 组件名.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
}

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

  1. 函数组件配置

    function List({pageSize = 10}) {
      return (
        <div>
          此处展示props的默认值:{ pageSize }
        </div>
      )
    }
    
    // 不传入pageSize属性
    <List />
    
  2. 类组件

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

生命周期

组件的生命周期是指组件从被创建到挂载到页面中运行起来,再到组件不用时卸载的过程。

注意,只有类组件才有生命周期(函数组件不需要实例化)

img

图像链接:http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

在react中,生命周期主要分为三个大阶段,以下分别简要讲述:

挂载阶段

life1.png

钩子函数触发时机作用
constructor创建组件时,最先执行,初始化的时候只执行一次1. 初始化state 2. 创建 Ref 3. 使用 bind 解决 this 指向问题等
render每次组件渲染都会触发渲染UI(注意: 不能在里面调用setState()
componentDidMount组件挂载(完成DOM渲染)后执行,初始化的时候执行一次1. 发送网络请求 2.DOM操作
更新阶段

life2.png

钩子函数触发时机作用
render每次组件渲染都会触发渲染UI(与 挂载阶段 是同一个render)
componentDidUpdate组件更新后(DOM渲染完毕)DOM操作,可以获取到更新后的DOM内容,不要直接调用setState
卸载阶段
钩子函数触发时机作用
componentWillUnmount组件卸载(从页面中消失)组件卸载(从页面中消失)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值