学习React记录篇07
hooks的规则
- 只在React函数中调用
- 只在顶层调用hooks,并且不要在循环,条件判断或嵌套函数中调用hooks
正常调用:
错误调用:
首先需要探讨为什么React需要不可变,也就是单向数据循环
上面是一段React的代码,先把setData函数转化
实际上React对于响应式数据做了一层浅层比较,如果数据是可变的话
直接修改数据,如果数据是Object类型的,那么就无法判断数据改变,从而不会重新渲染组件
对于React为什么不选择深层比较,深层比较是非常影响性能的。
数组的不可变性
一般不修改原数组,返回新数组的方法有map,reduce,filter,slice
在JSX中可以使用数组循环返回组件或元素,类似于vue中的v-for
每次使用map循环需要给每个元素添加key值,和vue类似,这可以提升性能
不写会出现警告
key可以使用索引值填写,但对性能没有提升
操作对象和数组差不多
如果属性值重复,会被覆盖