React 缺点

110 阅读1分钟
  1. JSX做表达式判断时候,需要强转为boolean类型
    • 不使⽤ !!b 进⾏强转数据类型,会在⻚⾯⾥⾯输出 0
render() {
const b = 0;
return <>
  { !!b && <div>这是⼀段⽂本</div> }
</>
}
  1. 遍历⼦节点的时候,不要⽤ index 作为组件的 key 进⾏传⼊
    • 在react中,只有被改变了的元素才会被重新渲染
    • diff算法将newVDom与改变前的Dom结构(oldVDom)进行比较,找到key值相同的li标签,并进行自上至下逐一对比
    • 将上面的所有比对的差异放入一个补丁包中,再将补丁包应用到真实DOM上
    • 原本每次点击只需要逐个删除列表中的第一个li节点
    • 由于用index做key导致点击事件发生后,新产生的newVDOM中li的key被动态赋值,于是就有了对比错位,导致diff以为每个li都发生了改变,于是页面重新渲染了所有的列表项 image.png
  2. 给组件添加ref时候,不要使⽤匿名函数(否则去ref赋值后的属性会取到null)
    • 因为当组件更新的时候,匿名函数会被当做新的prop处理
    • 让ref属性接受到新函数的时候,react内部会先清空ref,即以null为回调参数先执⾏⼀次ref这个props,再在以该组件的实例执⾏⼀次ref
  3. 不要在 componentWillReviceProps ⾥使⽤ setState
    • 如果⼀定要使⽤,那么需要判断结束条件,不然会出现⽆限重渲染,导致⻚⾯崩溃
    • componentDidUpdate会⽆限重渲染