react分享01

652 阅读2分钟

react始终整体刷新整个页面(基本思想)

  • 1个概念(组件方式描述ui)
  • 4个必须api
  • 单向数据流
  • 完善的提示

react通过组件考虑UI

  • props+state => view(组件展现形式由props属性 和 state状态一起决定)
  • 1 React中组件本身不提供方法 而是某种状态机(一般状态是什么结果就是什么)
  • 2 react可以理解为一个纯函数
  • 3 单向数据流动(组件接收参数一定是通过props 要想看到组件状态 一定是view暴露了一个事件 外包监听这个状态看到组件变化。)

组件的两种类型

  • 1受控组件(状态受到外部控制)
  • 2非受控组件(不受外界控制状态由内部控制,不需要传props 和 state )

组件的单一指责原则

  • 1 每个组件只做一件事件
  • 2拆分小组件,让组件尽量的小 功能尽量的简单。方便维护而且可以提高性能,因为一个大组件渲染的时候所有状态都需要渲染

数据状态管理DRY原则

1能计算得到的状态尽量别单独储存 2组件尽量无state状态 通过props获取

react中JSX是语法糖而不是模版引擎

语法糖的优点运行实质是通过js在创建节点的方式插入DOM,其他模版语言是通过解析器解析html内容 jsx本身也是表达式

ES6的延展属性

const porps ={ name:xx;age:15 } <Test { ...props } />

react生命周期

constructor

  • 1用于初始化内部的状态 很少使用
  • 2唯一可以直接修改state的地方 可以使用this.state.name = xxx

getDerivedStateFromProps

  • 1当state 需要从props时初始化会用到(一般当用props初始化sate时候 这个状态一般都可以从props直接读到,这个state的状态不需要存储。)
  • 2尽量不要使用 维护两者一致性会增加复杂度
  • 3每次render 都会调用
  • 4典型场景 form控件获取初始值

componentDidMount

  • 1UI渲染完成后调用
  • 2只执行一次
  • 3典型场景获取外部资源 (操作dom节点 获取网络请求等)

getSnapshotBeforeUpdate

  • 1在页面render之前调用 state已更新
  • 2典型场景 获取render 之前的DOM状态

ComponentDidUpdate

  • 1每次UI更新时候被调用
  • 2典型场景 页面根据props重新获取数据 如详情页id变化 更新数据

shouldComponentUpdate

  • 1决定虚拟DOM是否需要重拾
  • 2一般可以由PureComponent自动实现
  • 3典型场景 性能优化