如何自定义 Hook_前端培训

自定义 Hook

传统上使用 HOC 或 render props 的写法实现逻辑共享;而定义自己的 Hook,可以将组件中的逻辑抽取到可服用的函数中去。

比如将之前例子中的 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>  );}

如上所示:

自定义 Hook 函数的参数是自由定义的

因为只是个纯函数,所以不同组件都可以各自调用

使用 use  前缀不是硬性要求,但确实是推荐使用的约定

不同组件只共享状态逻辑,而不共享任何状态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值