美文网首页
hook使用场景1 共享逻辑代码

hook使用场景1 共享逻辑代码

作者: skoll | 来源:发表于2020-06-22 21:18 被阅读0次

将一些组件的逻辑状态提取到可重用的函数中去

场景1:很多地方都需要一个获取玩家在线状态的函数

1 .比如聊天组件中需要知道显示好友在线状态,联系人列表需要把名字设置为绿色
2 .如果是vue中,或者是之前的思路,这种实时的数据肯定是需要websocket连接,返回一个好友列表,里面有状态,然后按照列表显示,渲染组件
3 .但是这个是以id为基础的,更加细粒度的操作,根据id来请求是否有玩家在线,如果在线,那就返回true,不在线,就返回失败
4 .其实就是写一个函数,这个函数可以存储自己的局部变量,然后根据传入参数值,做一些操作,最后返回一个值

基本使用

import React,{useState,useEffect} from 'react'
//引入基本的库

//功能介绍:传入一个id,返回他是否在线,如果这是一个函数,好像也是可以的吧。


function useFroentStatus(frientID){
    const [isOnline,setIsOnline]=useState(null)
//定义一个局部变量

    useEffect(()=>{
        function getStatus(){
            return setTimeout(()=>{
                let num=Math.random()
                if(num>0.5){
                    setIsOnline(false)
                }else{
                    setIsOnline(true)
                }
            },1000)
        }
        // 假装请求了一下数据
        let timeer=getStatus()

        return ()=>{
            clearTimeout(timer)
            // 离开的时候清除数据
        }
    })

    return isOnline
}

//使用
function FrientStatus(props){
    const isOnline=useFroentStatus(props.friend.id)
    if(isOnline==null){
        return 'Lodaing'
    }else{
        return isOnline?"Online":"offline"
    }
}

function FrientListItem(props){
    const isOnline=useFroentStatus(props.friend.id)

    return (
        <li style={{color:isOnline?"green":"black"}}>
            {props.friend.id}
        </li>
    )
}

使用情况2 将一个组件疯转改的状态或行为分享给其他组件

1 .返回鼠标的坐标位置
2 .

相关文章

  • hook使用场景1 共享逻辑代码

    将一些组件的逻辑状态提取到可重用的函数中去 场景1:很多地方都需要一个获取玩家在线状态的函数 1 .比如聊天组件中...

  • [react]24、自定义hooks

    1、自定义Hook的基本使用 自定义Hook本质上只是一种函数代码逻辑的抽取,严格意义上来说,它本身并不算Reac...

  • ScyllaHide的Hook原理

    Hook是通过修改程序代码或数据,达到改变程序逻辑的目的。Hook种类很多,ScyllaHide主要使用的是inl...

  • hook安卓代码入门

    hook定义hook,钩子。勾住系统的程序逻辑。在某段SDK源码逻辑执行的过程中,通过代码手段拦截执行该逻辑,加入...

  • Hook FAQ

    hook并不能覆盖所有class所有使用场景 1 .getSnapshotBeforeUpdate,getDerv...

  • React深入(二)

    Hook React 16.8.0 是第一个支持 Hook 的版本; 使用原因 使用组件之间复用逻辑更容易(对比高...

  • react hook

    一、为什么要使用react hook 1. 在组件之间复用状态逻辑很难(状态逻辑复用) React 没有提供将可复...

  • Android 03.Fragment应用

    Fragment(碎片) Fragment应用上 应用场景 静态使用 xml 动态使用 逻辑代码 生命周期 ---...

  • 设计模式20:观察者模式(Observer)

    1. 简介 1.1 优点 1.2 缺点 1.3 使用场景 2.实现代码 2.1 具体逻辑 2.1.1事件源 2.1...

  • Swift UIBezierPath 画圆,确定开始的位置

    应用场景 自定义画圆或者圆弧。 核心逻辑/代码 使用UIBezierPath(arcCenter: CGPoint...

网友评论

      本文标题:hook使用场景1 共享逻辑代码

      本文链接:https://www.haomeiwen.com/subject/vilmtktx.html