react Hooks

useEffectjavascript

一、useEffect是didMount和didUpdate和willUnmount三个函数的集合java

二、useEffec(fun):fun会在每次组件render以后执行,而fun中return的cleanup会在willUnmount中执行react

三、useEffect(fun,[xxx])第二个参数用于订阅哪一个props修改后执行,能够利用此优化函数

 

 

自定义hook优化

一、以 “use” 开头的函数,函数内部能够调用其余的 Hookcode

二、Hook 是一种复用状态逻辑的机制,因此每次使用自定义 Hook 时,其中的全部 state 和反作用都是彻底隔离的。只是处理state的逻辑同样blog

// useFriendStatus

import React, { useState, useEffect } from 'react';

function useFriendStatus(friendID) {
  const [isOnline, setIsOnline] = useState(null);

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

    ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
    return () => {
      ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
    };
  });

  return isOnline;
}


function FriendStatus(props) {
  const isOnline = useFriendStatus(props.friend.id);

  if (isOnline === null) {
    return 'Loading...';
  }
  return isOnline ? 'Online' : 'Offline';
}

function FriendListItem(props) {
  const isOnline = useFriendStatus(props.friend.id);

  return (
    <li style={{ color: isOnline ? 'green' : 'black' }}>
      {props.friend.name}
    </li>
  );
}
相关文章
相关标签/搜索