React hooks与Faced模式才是最佳实践?

573次阅读  |  发布于3年以前

写在开头

阅读本文前需要先了解的知识点

  import React, { useState } from 'react';

function Example() {
  // 声明一个新的叫做 “count” 的 state 变量
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}
import { 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;
}

这个hook的作用是:通过传入的好友id,调用其他的hook,来判断其是否在线。

正式开始

拆解业务后的下一步 - 封装自定义hook

这个时候问题来了,如果不封装hook,那么我们将要在组件使用的地方去调用这几个hook或者函数,然后组件内部通过一系列处理判断去完成这个业务逻辑判断,可是这个通过头像查看群组内对方朋友圈的情况不止一个地方会用到,那么此时就需要复用这个逻辑,这里就需要用到faced模式了

faced模式的使用

这个时候,我们应该提供一个hook,通过它去访问这几个hook,最后在业务中去复用这个逻辑

这样,你或许不仅明白了为什么React会造出hooks这个东西,还明白了什么是faced模式

写在最后

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8