React官方文档那些容易遗漏的知识

53 阅读2分钟

本文章是作者本人学习完react后重新看官方文档得到一些心得

为什么props是不可变的?

首先什么是props不可变?即一个函数组件传入的参数不可以被函数组件自己改变。这是单项数据流的体现,这个props只能由它的父组件传入,如果破坏了这个规定,首先会导致整个组件的渲染变得不可预测,即函数组件的渲染还依赖它本身对自己的修改,react将无法预测什么时候修改组件,同样的它破坏了组件是纯函数的这一设计哲学

有关条件渲染:

在条件渲染的控制中一般是由父组件来控制是否渲染的,避免在子组件中使用return null这种操作,在简单的条件渲染中我们可以使用三元运算符,但如果出现了大量的嵌套的条件表达式,就要考虑是否把它提成一个组件了。在通过&&进行条件渲染的时候不要把数字类型放在&&左侧,因为js会把他们转化成布尔值,但是最后会返回第一个值,因为它只忽略 null undefined或者Boolean 传一个0进去是真的会被渲染的。

eg: messageCount && <p>New messages</p>。其原本是想当 messageCount 为 0 的时候不进行渲染,但实际上却渲染了 0

为了更正,可以将左侧的值改成布尔类型:messageCount > 0 && <p>New messages</p>

在需要key的场景需要返回多个dom

如何解决?首先在简写的情况下<></>是不能设置key的,所以这里可以使用一个新的div来设置key或者使用Fragment的完整写法

Key的注意点

首先key的作用是帮助react来识别每个组件的,所以如果没有了key,在一个数组或者类数组的中间,进行增删会导致react无法非常正确且快速的识别组件。以及不要直接把数组索引当成key,原因同上,而且key必须是唯一且不变的,不能使用随机生成,以及这里要记住key不会作为参数进行显式的传递所以如果确实需要id数据请在props里面传递。还有一个要注意的是,key只在数组和类数组中才有效,所以只需要在这上面去设置