[Day11] [笔记]React Hooks - UseRef

UseRef

useRef 会回传一个 mutableref object.current 属性为初始为传入的参数。写法如下:

const refContainer = useRef(initialValue); //initialValue 为初始值

使用时机:

  • 计算 Render 次数
  • 直接操作 DOM :在 html 标签上加上 ref 属性,就可以印出 DOM,以下方案例就是可以印出 input DOM
  • 抓取 Previous 值
function App() {
  const renderCount = useRef(0); // {current:0}
  const [name, setName] = useState('');
  const inputRef = useRef(null);

  function changeValueHandler(e){
    setName(e.target.value);
  }

  useEffect(() => {
    renderCount.current += 1; //重新渲染一次就加一
  },[name]);

  function focusEvent(){
    inputRef.current.focus();
  }

  return (
    <div className="App">
      <header className="App-header">
        {/* 我们只要在 html 标签上加上 ref 属性,就可以透过 inputRef.current.focus() 
         直接读取 DOM */}
        <input ref={inputRef} value={name} onChange={changeValueHandler} type="text"/>
        <p>渲染次数 {renderCount.current} </p>
        <button onClick={focusEvent}>按钮</button>
      </header>
    </div>
  );
}

小结:

UseRef 不会重新 Render 元件,但可以更新值,也可以直接获取 DOM

参考资料


<<:  Day11 - 状态机与现实世界的落差 - 1: Action? Side Effect

>>:  DAY11:机器学习模型_笔记分享

Day25:【技术篇】JavaScript 套件 - classnames

一、前言   classnames 是一个方便 JavaScript 管理 class name 的...

RDS备份还原与地端的差异

在使用面板成功备份还原後, 再使用SSMS实作的可行性, 是否跟地端的一样? 先使用UI方式备份, ...

用 zul 快速制作雏形系统

在软件开发过程中,最不确定的因素是「需求」。因为通常要做的系统是没人用过的新系统,常常使用者没看到系...

[Day09 - UI/UX] UI 绘制

在UI出图之前,我们先确认好目前的 wireframe 是完整的。接下来只要依照 wireframe...

[CSS] Flex/Grid Layout Modules, part 15

烫伤了手停了几天,不过差不多 15 天好像就交代完所有的东西了。剩下的大部分是比较冷门,甚至是 Gr...