当然是函数式组件,因为函数式组件更加简洁。
useState和setState的使用:
并且,useState中的set函数对于状态的管理是异步更新:
如果状态数据是对象的话,如何更新呢?如下:
先将原对象解构,再给set函数赋值一个新对象。但是,还有另外一种更好的方式,给set函数传递一个更新的函数,如下:
为什么这种方式更好?这就要结合到useCallback来说了(useCallback可以将事件处理函数进行缓存)。要在事件处理函数中使用set赋值新对象,那么势必会使用到原先的对象(因为要解构),那么这样的话就要将原先的对象传递给useCallback,让useCallback依赖这个对象,从而将事件处理函数进行更新。但是,如果我们不使用set赋值新对象的方式,而是给set函数传递一个回调函数,那么这样的话就不需要让useCallback依赖原先的对象了,因为这个回调函数的参数就是上一次已经更新的最新的对象。(这个可以作为性能优化的一个点)
提示: