React Hook入门系列(3)-- useRef

简介

Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。

优势

  • 简化组件逻辑

  • 复用状态逻辑

  • 无需使用类组件编写

so,我们来学习第二个“Hook” - useRef

语法

// 定义
let r = useRef(null)    // 参数是对象初始值

// 设置
<div ref={r}></div>

// 使用
console.log(r)    // { current: xxx }

示例

import React, { useState, useEffect, useRef, Fragment } from 'react'

function Ref() {
    let [text, setText] = useState('是否每一场美梦醒来都很爽')
    let r = useRef(null)
    
    return (
        <Fragment>
            <input 
                type='text'
                value={text}
                onChange={(e) => {
                    setText(e.target.value)
                }}
                ref={r}
            />
            <button onClick={() => {
                r.current.focus()
            }}>设置焦点</button>
        </Fragment>
    )
}

示例2

通过useRef记录上次值

import React, { useState, useEffect, useRef } from 'react'

function Ref() {
    const [num, setNum] = useState(0)
    let prev = useRef(num)
    useEffect(() => {
        prev.current = num
    })
    return (
        <div>
            <p>当前值:{ num }</p>
            <p>上次值:{ prev }</p>
            <button onClick={() => {
                setNum(num + 1)
            }}>递增</button>
        </div>
    )
}

代码执行顺序为:状态改变 -> dom更新 -> useEffect

结尾

最后,祝大家2022一切皆顺~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值