iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
自我挑戰組

前端菜鳥的react初體驗系列 第 19

前端菜鳥的react初體驗 Day19-Hook-useRef

  • 分享至 

  • xImage
  •  

今天的絕望在我的預料之內,但也是真的沒想到會這麼絕望。
https://ithelp.ithome.com.tw/upload/images/20221004/20152660EV4ixjuvXV.jpg

總之,來談談useRef吧。(實在也是不保證我自己有懂)

看到useRef,就會很直覺地想到ref,我在幾天前有稍微聊了一下,在這裡
那麼,useRef要拿來做甚麼呢?
我自己會把它分為兩種用法:

  1. 更好的去操作Dom
  2. 來存取值

操作Dom

之前,我們用過字串和function的形式來存放ref,但這次,我們可以直接把ref存在useRef裡面。
一樣,速速掠過!code的原始來源

import { useState, useEffect, useRef } from "react";
function App() {
  const inputElement = useRef();
  const focusInput = () => {
    console.log(inputElement.current)
    inputElement.current.focus();
  };

  return (
    <>
      <input type="text" ref={inputElement} />
      <button onClick={focusInput}>Focus Input</button>
    </>
  );
}
export default App;

useRef的寫法,就是利用useRef()來建立一個useRef(好好笑,這句話在講甚麼?)。
()裡面是這個ref的初始值。
然後,就可以拿來用了。

const inputElement = useRef();

把剛剛建立的inputElement放在inputref{}裡面,這時候,inputElement就跟input綁定了。

  return (
    <>
      <input type="text" ref={inputElement} />
      <button onClick={focusInput}>Focus Input</button>
    </>
  );

接著我們來利用點擊事件實際操作看看我們綁定的ref
這裡特別需要注意的是,useRef返回的是一個物件,這個物件會有current的屬性。
current的值才是我們要的東西。

這時候如果觸發了focusInput這個function,就會focus剛剛綁定的input。
而console.log出來的東西,如大家所想,就是<input type="text">沒錯!

  const focusInput = () => {
    console.log(inputElement.current)
    inputElement.current.focus();
  };

那麼,明天再來繼續談談第二種用法吧。
哈哈哈哈哈我到底有沒有搞懂阿哈哈哈哈哈。
https://ithelp.ithome.com.tw/upload/images/20221004/20152660Kj7u824RXe.jpg


上一篇
前端菜鳥的react初體驗 Day18-Hook-useContext
下一篇
前端菜鳥的react初體驗 Day20-Hook-useRef(2)
系列文
前端菜鳥的react初體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言