一、useState:保存状态
1、useState接收一个初始状态或者计算函数,这个函数返回初始状态
2、每次更新状态,子组件都会自动执行,不管它有没有依赖此状态,这里只是会执行函数式组件和class组件的render函数和useEffect,并不会重新渲染dom节点
3、如果新的state依赖以前的state,则可以给setState传递一个函数,这个函数的参数是旧的state,返回新的state
4、如果新的state和旧的state一致,则不会去重新渲染,子组件也不会重新渲染,也不会去执行父子组件的useEffect
二、useEffect:做一些有副作用的操作,可以类比class组件的生命周期
1、默认情况下,effect 将在每轮渲染结束后执行
2、返回值是一个函数,这个函数可以干一些清除的事情,它会在组件卸载之前执行,或者说每次渲染之前会干这个函数内的事情,干完之后再做useEffect里面的事情
3、只运行一次,传递空数组
4、依赖数据改变才执行,传递依赖数据的数组