iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
Modern Web

使用 React 製作簡易專案管理網站:從基礎到實戰系列 第 17

[Day 17] React 保衛戰 - 以不變應萬變「useRef」

  • 分享至 

  • xImage
  •  

如果我們希望在元件中儲存某個值,即使元件重新執行時還能保留,我們可以使用 React 提供的 useRef。

useRef 的使用方式

const ref = React.useRef(initialValue);
  • initialValue 為初始值
  • 被保留的值可以透過 ref.current 取得

例如:

fuction Timer() {
  const ref = React.useRef(null);
  
  return null;
}
  • 即時重新 rerender 但 ref.current 並不會變

useRef 常被使用在存取 DOM 物件

通常我們不需要去存取 DOM 物件,因為 DOM 的更新都交由 React 來處理,但有時候我們還是希望可以去存取 DOM 物件,例如偵測元素的寬高、位置等等。

useRef 可以搭配 ref 屬性來取得 DOM 物件,使用方式如下:

fuction App() {
  const divRef = React.useRef(null);
  
  useEffect(() => {
    console.log(divRef.current);
  });
  
  return <div ref={divRef} />;
}

將透過 useRef 建立的物件設給 div 元素的 ref 屬性,我們就可以透過此物件的 current 屬性取得 div 元素物件。


上一篇
[Day 16] React 保衛戰 - 跳脫 React 的掌控「useEffect」
下一篇
[Day 18] React 保衛戰 - 添加樣式
系列文
使用 React 製作簡易專案管理網站:從基礎到實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言