State DforDream

state 状态

  1. state只能定义在constructor(){}生命周期中
  2. 当state状态变化时,视图自动更新,视图更新state不会更新(单向绑定)
  3. state只能通过 this.setState() 方法来修改,因为这个api会触发diff算法,从而使得视图更新
  4. this.setState() 默认情况下是异步的,在定时器内是同步的
  5. 在同一个方法中,如果有多个this.setState()方法,React会先将这些函数合并后在修改,因此这样只会触发一次diff算法
  6. 修改state状态时,新值与旧值无光,建议使用 this.setState({haha: hehe}[,fn]) 来修改状态
  7. 修改state状态时,新值由旧值计算而来,建议使用 this.setState((state,props) => {return {haha: hehe}}[,fn]) 来修改状态
  8. state和props建议不要相互赋值,因为他们是完全独立的
  9. 每次执行this.setState()都会触发diff算法,diff算法找出虚拟DOM中的脏节点,然后执行render方法更新视图,只渲染与状态相关的元素节点

条件渲染

  1. {true && <div>显示</div>}
  2. {true ? <div>显示</div> : <div>不显示</div> }
  3. 多条件判断,使用第一种进行组合,或者封装为函数

动态样式

  1. class写成className
  2. style 写成

列表渲染

  1. 如果要执行复杂的数据处理,建议使用自定义render方法来渲染列表
  2. 列表渲染,建议使用map()方法
  3. 列表循环,一定要有key,key可以帮助diff算法快速的找到更新的节点,避免列表全部更新