将myRef转换为钩子版本

时间:2019-08-14 09:07:12

标签: javascript reactjs autofocus

我找到了这个答案:ReactJS and autofocus

但是我不知道该如何转换:

constructor(props) {
    super(props);
    this.myRef = React.createRef();
}

componentDidMount(){
  this.myRef.current.focus();
}

<input type="text"  ref={this.myRef} />

反应钩子版本。

我尝试这样做:

const myRef = () => {
  React.createRef().current.focus();
}

<input type="text"  ref={myRef} />

但出现错误:

TypeError: Cannot read property 'focus' of null

1 个答案:

答案 0 :(得分:0)

useRef一样,您也需要使用useEffect,它会在渲染后运行。 []表示it only runs once

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

function Component() {

  const ref = useRef(null);

  useEffect(() => {
    ref.current.focus();
  }, []);

  return <input type="text"  ref={ref} />;

}