useState
- 初始化两种两种赋值方式 直接赋值 和 箭头函数里加return
- 修改setState两种方式
- useState都是异步
const [x, setX] = useState(0)
const [y, setY] = useState(() => {
return
})
const onClick = () => {
setX(x + 1)
console.log(x, '同步');
setX(pre => {
console.log(pre, '异步');
return pre
})
}
return (
<div>hooks2
<h1 onClick={onClick}>点击</h1>
</div>
)
useEffect
useEffect(() => { }, [])
useEffect(() => { }, [x])
useEffect(() => {
return (() => {
console.log("我被卸载了");
})
}, [])
react生命周期
react 生命周期 目前分为三个阶段
- react 16.4 之前 类组件
- 加载阶段 :constructor render componentDidMount
- 更新阶段 :shouldComponentUpdate(nextProps, nextState) return false 组件不渲染 return true 组件才会渲染 、render 、 componentDidUpdate
- 卸载阶段 :componentWillUnmount
- react 16.4 之后 类组件
- 加载阶段:constructor、render、componentDidMount、getDerivedStateFromProps(从更新后的props中获取State 获取数据状态的)、
- 更新阶段:shouldComponentUpdate(nextProps, nextState) return false 组件不渲染 return true 组件才会渲染 、 getDerivedStateFromProps、 render、componentDidUpdate、getSnapshotBeforeUpdate(获取render渲染之前的dom状态 获取dom的)、
- 卸载阶段: componentWillUnmount
- React 16.8 更新了 Hooks 之后
- 常用有8个hooks 目前已知(useState、useEffect、useRef、useContext、useCallback、useMemo、useImperativeHandle) 这7个hook 和forward、 memo 两个搭配的高阶函数