gpt4 book ai didi

javascript - React : set focus on componentDidMount, 如何用钩子(Hook)做?

转载 作者:可可西里 更新时间:2023-11-01 02:37:29 25 4
gpt4 key购买 nike

在 React 中,通过类,我可以在组件加载时将焦点设置为输入,如下所示:

class Foo extends React.Component {
txt1 = null;

componentDidMount() {
this.txt1.focus();
}

render() {
return (
<input type="text"
ref={e => this.txt1 = e}/>
);
}
}

我正在尝试使用新的 hooks proposal 重写此组件.

我想我应该使用 useEffect而不是 componentDidMount,但是如何重写焦点逻辑?

最佳答案

您可以使用 useRef钩子(Hook)来创建一个 ref,然后将它集中在一个 useEffect 钩子(Hook)中,用一个空数组作为第二个参数,以确保它只在初始渲染之后运行。

const { useRef, useEffect } = React;

function Foo() {
const txt1 = useRef(null);

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

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

ReactDOM.render(<Foo />, document.getElementById("root"));
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.production.min.js"></script>

<div id="root"></div>

关于javascript - React : set focus on componentDidMount, 如何用钩子(Hook)做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53188507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com