自定义Hook的简单案例

自定义滑动距离top的高度的hook:

import { useState } from 'react'
export function useWindowScroll() {
  const [y, setY] = useState(0)
  // 在滚动行为发生的时候获取滚动距离,交给y
  window.addEventListener('scroll', () => {
    const h = document.documentElement.scrollTop
    setY(h)
  })
  return [y]
}

自定义本地存储hook:

import { useState, useEffect } from "react";

export function useLocalStorage(key, defaultValue) {
  const [message, setMessage] = useState(defaultValue)
  // 只要每次message变化都会同步到本地
  useEffect(() => {
    window.localStorage.setItem(key, message)
  }, [message, key])
  return [message, setMessage]
}

 然后导入到app中

import { useWindowScroll } from './Hook/useWindowScroll.js'
import { useLocalStorage } from './Hook/useLocalStorage.js'

function App12() {
  const [y] = useWindowScroll()
  const [message, setMessage] = useLocalStorage('hook-key', '李非')
  setTimeout(() => {
    setMessage('代国永')
  }, 5000)
  return (
    <div style={{ height: '1200px' }}>
      函索组件{y}----{message}
    </div>
  )
}
export default App12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值