[react] hooks基础 => useRef ===

本文详细介绍了React Hooks中的useRef在操作DOM及多次渲染间共享数据的应用,通过实例展示了如何利用useRef实现倒计时功能,包括在验证码获取和404页面3秒跳转场景中的应用。
摘要由CSDN通过智能技术生成

目录

使用 useRef 操作DOM

useRef-在多次渲染之间共享数据

自定义hooks-封装倒计时-需求-验证码

自定义hooks-封装倒计时-需求-404页面3秒跳转

自定义hooks-封装倒计时-提炼hooks


使用 useRef 操作DOM

使用场景:在 React 中进行 DOM 操作时,用来获取 DOM

作用:返回一个带有 current 属性的可变对象,通过该对象就可以进行 DOM 操作了。

const inputRef = useRef(null) 

解释:

  • 参数:在获取 DOM 时,一般都设置为 null

  • 返回值:包含 current 属性的对象。

  • 注意:只要在 React 中进行 DOM 操作,都可以通过 useRef Hook 来获取 DOM(比如,获取 DOM 的宽高等)。

  • 注意:useRef不仅仅可以用于操作DOM,还可以操作组件

示例代码 

// 第一步,引入useRef
import { useRef } from 'react'
import reactDom from 'react-dom'

export default function App () {
  // 第二步,调用useRef,并设置一个空的初始值,得到引入对象
  const inpRef = useRef(null)
  const changeInp = () => {
    //   第四部,通过引入对象.current属性,获得元素或组件
    console.log(inpRef.current)
    inpRef.current.style.backgroundColor = 'red'
    inpRef.current.focus()
  }
  return (
        <div>
            {/* 第三步,把引入对象设置ref给任意元素或组件 */}
            <input ref={inpRef}></input>
            <button onClick={changeInp}>按钮</button>
        </div>
  )
}

reactDom.render(<App></App>, document.querySelector('#root'))

useRef-在多次渲染之间共享数据

问题导入

import React, { useEffect, useState } from 'react'
import ReactDom from 'react-dom'
export default function App () {
  const [count, setCount] = useState(0)
  let timeId = null
  console.log(timeId)
  useEffect(() => {
    timeId = setInterval(() => {
      setCount((count) => count + 1)
    }, 1000)
    console.log(timeId)
  }, [])

  const hClick = () => {
    console.log(timeId)
    clearInterval(timeId)
  }

  return (
    <div>
      count:{count}
      <button onClick={hClick}>点击停止定时器</button>
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值