React在基于函数的组件中渲染后运行javascript代码

React在基于函数的组件中渲染后运行javascript代码,javascript,reactjs,frontend,jsx,Javascript,Reactjs,Frontend,Jsx,我有一个包含以下内容的表单组件 function Form() { return ( <div className="form-container"> <div className="form-control"> <label id="text-input">Text </label> <input ty

我有一个包含以下内容的表单组件

function Form() {
    return (
    <div className="form-container">
        <div className="form-control">
            <label id="text-input">Text </label>
            <input type="text"></input>
        </div>
        <div className="form-control">
            <label>Time </label>
            <input type="text"></input>
        </div>
        <div className="form-control" style={{alignItems:"center"}}>
            <button className="add-but">Add</button>
        </div>
    </div>
    )
}
函数形式(){
返回(
正文
时间
添加
)
}
我想在呈现组件后聚焦文本元素。
我第一次尝试放置
{document.querySelector(“#txt in”).focus()}
,它不起作用,搜索后我发现我可以使用标记
自动聚焦。一切都会很完美。

但我想知道,如果我想在渲染后实际执行javascript代码呢?还是用javascript来实现这一点?我找到了基于
的组件的答案,但找不到基于
功能
的组件,比如我正在使用的组件。


在基于函数的组件中,如何执行元素渲染后要执行的代码?

您可以使用React Hooks
useffect

简单地说就是下面的代码

import React, {useEffect} from "react";

function Form() {

 useEffect(() => {
    // Do whatever you want after first render
    // Put your code here
 }, [])

}

您可以使用React Hooks
useffect
实现您的目的

简单地说就是下面的代码

import React, {useEffect} from "react";

function Form() {

 useEffect(() => {
    // Do whatever you want after first render
    // Put your code here
 }, [])

}

与组件正在编写的内容类似,以前会使用类似于
componentdiddupdate
componentDidMount
的函数在渲染后/之前操作组件。函数组件意识到我们可以使用一个“钩子”来实现这个叫做
useffect
的功能,其中可以根据组件的状态更改触发特定的操作


这里有一个指向useEffect文档的链接-

与组件编写的内容类似,以前可以使用类似于
componentDidUpdate
&
componentDidMount
的函数在渲染后/渲染前操纵组件。函数组件意识到我们可以使用一个“钩子”来实现这个叫做
useffect
的功能,其中可以根据组件的状态更改触发特定的操作


这里有一个指向useEffect文档的链接-

如果您使用react类中的react钩子或生命周期方法,则可以使用
useEffect
函数。为此,您需要一个useRef钩子,如果您使用react钩子或
生命周期方法,则可以使用为此,您需要一个useRef钩子