react hook 未完待续...

一.react hook解决了 react的哪些问题
1.
二. const [count,setCoune]= useState(0)
useState(初始值),返回state 和 更新 state的函数
三.使用Effect Hook
3.1.useEffect(()=>{ document.title = You clicked ${count} times})
useEffect(()=>{ })
useEffect中的函数就是我们的effect。
在effect中获取到的state值都是最新 的,因为state在函数的作用域中。当React每次渲染组件时,会保存已经使用的effect,并在更新完DOM后使用。
在第一次渲染和 每次更新后都会执行。
???如此,会产生大量不必要的渲染吗。会。因此需要传递数组为useEffect的第二个可选参数。
3.2 useEffect(()=>{document.title = You clicked ${count} times},[count])
对比useEffect中第二个参数数组中的值,只要这些值的两次渲染中没有变化,就可以跳过对当前effect的掉员工。对有清除操作的effect同样适用。
如果需要在挂载和卸载时执行,可以传一个空数组([])作为第二个参数。类似于在componentWillMount 和 componentWillUnmount 中执行。这是在挂载和卸载中都执行,OR just once???
3.3.需要清除的effect
在effect中返回的函数,就是自己的清除函数。一般用于清除订阅。它会在组件卸载的时候进行清除。effect在每次渲染的时候都会执行。React在执行当前effect时会对上一个自己 的effect清除。

了解了 useEffect 可以在组件渲染后实现各种不同的副作用。有些副作用可能需要清除,所以需要返回一个函数:

  useEffect(() => {
    function handleStatusChange(status) {
      setIsOnline(status.isOnline);
    }

    ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
    return () => {
      ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
    };
  });
其他的 effect 可能不必清除,所以不需要返回。

  useEffect(() => {
    document.title = `You clicked ${count} times`;
  });

四.Hook 规则 只放在最顶层 未完待续
五.自定义Hook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值