React 学习笔记(一)

栏目: IOS · Android · 发布时间: 5年前

内容简介:悄咪咪说一下今天是世界微笑日(orz),祝大家快乐:grinning:
  1. PropTypes & DefaultProps
    • PropTypes 对通信间传入的值进行校验

      import PropTypes from 'prop-types'
      
      TodoItem.propTypes = {
        // arrayOf 或者 是数字 或者是 字符串
        // arrayOf( PropTypes.number , PropTypes.string )
        //基本的一些类型
        optionalArray: PropTypes.array,
        optionalBool: PropTypes.bool,
        optionalFunc: PropTypes.func,
        optionalNumber: PropTypes.number,
        optionalObject: PropTypes.object,
        optionalString: PropTypes.string,
        optionalSymbol: PropTypes.symbol,
        
        //
        optionalNode: PropTypes.node,
      
        // 一个 React 元素
        optionalElement: PropTypes.element,
      
        //也可以检查是不是一个类的实例
        optionalMessage: PropTypes.instanceOf(Message),
      
        //检查是不是其中确切的值之一
        optionalEnum: PropTypes.oneOf(['News', 'Photos']),
      
        //也可以是这些类型其中之一
        optionalUnion: PropTypes.oneOfType([
          PropTypes.string,
          PropTypes.number,
          PropTypes.instanceOf(Message)
        ]),
      
        // 一个某种类型的数组
        optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
      
        // 一个特定形式的对象
        optionalObjectWithShape: PropTypes.shape({
          color: PropTypes.string,
          fontSize: PropTypes.number
        }),
      
        //isReauired修饰的值表示必须传入 不能为空 且必须是string(或者其他)
        optionalisStringReauired: PrpTypes.string.isRequired
        
        // 任何数据类型的值
        requiredAny: PropTypes.any.isRequired,
      
      
      }
      复制代码
    • defaultProps

      • 如果没传入设定一个默认值
        TodoItem.defaultProps = {
          content: 'this is null'
        }
        复制代码
    • 更多详情见文档 Typechecking With PropTypes Doc

  2. Props ,State 与 render 函数
    • 当组件的state 或者 props进行改变的时候 render函数就会重新执行
    • 当父组件的render函数被运行时 它的子组件的render都将被重新运行
  3. 虚拟DOM (本质就是一个js对象 用来描述真实DOM)
    • react利用虚拟DOM渲染的流程
      • :point_down: state数据
      • :point_down: jsx模板
      • :point_down: state数据和jsx模板结合 先生成一个虚拟DOM
        React.createElement(tagName,{attr}, content)
        复制代码
      • :point_down: 用虚拟DOM生成真实DOM来显示
      • :point_down: state数据改变
      • :point_down: 数据 + 模板 重新渲染 生成新的虚拟DOM 并与 之前的虚拟DOM做对比 找出改变的那一部分 是两个js对象之间的对比
      • :point_down: 找到变化后 直接操作DOM 更新
    • 优点:
      1. 性能提升
      2. 跨端得以实现 RN..
    • 虚拟DOM中的Diff算法 (different, 找差异算法)
      • 虚拟DOM树是同层比较的
      • key值是对比中的一个标识 所以key值要保持稳定 尽量不用index作为key 用item
  4. 用ref来操作DOM (避免使用..因为推荐数据驱动的方式 不操作DOM)
    • e.target 也可以获取到
    • 给相应的元素添加 ref="xxx" 的属性, 然后 this.refs.xxx 获取到DOM元素
    • ref={ (xxx) =>{ this.xxx = xxx } } 相应的 this.xxx 就是那个DOM元素了
  5. setState()
    • 是一个'异步'操作 立马执行完之后React会对state的所有改变进行合并处理之后 才会重新去计算新的虚拟DOM 再根据最新的虚拟DOM去重新渲染真实DOM
      但是 这个异步是伪异步 只是维护了一个updataQueue 并不是说本身就是异步代码实现的
    • 第二个参数是一个回调函数, 即视图更新完毕后调用 就会避免某些值获取不到的情况
  6. React的生命周期函数
    • 在某一个时刻组件会自动执行的函数
    • Initialization (初始化一些数据)
      • constructor 初始化state和props 以及一些函数this指向问题

        constructor 不是React独有的 是es6 class语法 这里完美契合了React

    • Mounting (挂载时的生命周期 ,注意是第一次挂载时 之后数据更新,虚拟DOM更新后的挂载不算)
      componentWillMount
      componentDidMount
      
    • Updation (组件更新的流程)
      • props发生变化
        • props 发生变化时 最开始会有一个

          componentWillReceiveProps 一个组件从父组件接收参数, 只要父组件的 render 函数被重新执行了 子组件的中国生命周期函数就会被执行

      • 共同的生命周期函数
        • shouldComponentUpdate 组件被更新之前 自动执行
          需要return一个布尔值
          如果return true 组件会被更新
          如果return false 组件不更新 且之后的生命周期函数都不执行了
          如果这个组件第一次存在于父组件中 不会被执行
          如果这个组件之前已经存在于父组件中 才会执行
        • componentWillUpdate 组件更新之前会被自动执行 但是在 shouldComponentUpdate 之后执行 如果 shouldComponentUpdate return false 就不执行了
        • render 知道要数据更新了 所以 render 函数又会自动执行 更新组件
        • componentDidUpdate 组件更新完毕之后执行
    • Unmounting
      • componentWillUnmount 当组件即将被销毁时执行 此时还未被移除
    • 网上扣了张图..侵删..
      需要注意的是 图中最开始的两个函数在使用es6 constructor 时就不需要了
      React 学习笔记(一)

悄咪咪说一下今天是世界微笑日(orz),祝大家快乐:grinning:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

金字塔原理

金字塔原理

[美] 巴巴拉·明托 / 王德忠、张珣 / 民主与建设出版社 / 2002-12 / 39.80元

《金字塔原理》是一本讲解写作逻辑与思维逻辑的读物,全书分为四个部分。 第一篇主要对金字塔原理的概念进行了解释,介绍了如何利用这一原理构建基本的金字塔结构。目的是使读者理解和运用简单文书的写作技巧。 第二篇介绍了如何深入细致地把握思维的环节,以保证使用的语句能够真实地反映希望表达的思想要点。书中列举了许多实例,突出了强迫自己进行“冷静思维”对明确表达思想的重要性。 第三篇主要针对的......一起来看看 《金字塔原理》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具