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即时通讯
客户端的时候,我们可能会在客户端,需要在一个好友群组重判断是否能通过预览查看对方的朋友圈简介
-
hook
hook
,这是一个常见的需求hook
hook
,去组装这两个hook
,我们先绘制一个业务流程图,并且拆解出几个自定义hook
这个时候问题来了,如果不封装
hook
,那么我们将要在组件使用的地方去调用这几个hook
或者函数,然后组件内部通过一系列处理判断去完成这个业务逻辑判断,可是这个通过头像查看群组内对方朋友圈的情况不止一个地方会用到,那么此时就需要复用这个逻辑,这里就需要用到faced
模式了
这个时候,我们应该提供一个
hook
,通过它去访问这几个hook
,最后在业务中去复用这个逻辑
hook
.用来访问内部的多个hook
这样,你或许不仅明白了为什么React会造出
hooks
这个东西,还明白了什么是faced
模式
faced
模式和react hooks
的结合,在业务系统开发中,可以极大的提升效率,并且可以加强复杂业务系统的健壮性,单一逻辑的hook
跟单一逻辑的后端接口对应,复杂的业务由faced
模式统一提供对外的接口以访问内部的子系统