CTO一直跟我在宣扬faced模式,但是当时没有get到它的点get到的时候,他已经不在我身边工作了,真是一个悲伤的故事react hooks ?
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>
);
}faced模式(外观模式)?
hooks?
hooks它是一个函数,其名称以 “use” 开头,函数内部可以调用其他的 Hook,一个常见的自定义hooks如下: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,来判断其是否在线。
faced模式意在提供一个统一的接口,用来访问子系统中的一群接口react hooks提供更多的前端统一接口IM即时通讯客户端的时候,我们可能会在客户端,需要在一个好友群组重判断是否能通过预览查看对方的朋友圈简介
-hookhook,这是一个常见的需求hookhook,去组装这两个hook,我们先绘制一个业务流程图,并且拆解出几个自定义hook
这个时候问题来了,如果不封装
hook,那么我们将要在组件使用的地方去调用这几个hook或者函数,然后组件内部通过一系列处理判断去完成这个业务逻辑判断,可是这个通过头像查看群组内对方朋友圈的情况不止一个地方会用到,那么此时就需要复用这个逻辑,这里就需要用到faced模式了
这个时候,我们应该提供一个
hook,通过它去访问这几个hook,最后在业务中去复用这个逻辑
hook.用来访问内部的多个hook
这样,你或许不仅明白了为什么React会造出
hooks这个东西,还明白了什么是faced模式
faced模式和react hooks的结合,在业务系统开发中,可以极大的提升效率,并且可以加强复杂业务系统的健壮性,单一逻辑的hook跟单一逻辑的后端接口对应,复杂的业务由faced模式统一提供对外的接口以访问内部的子系统