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 Hooksuseffect
简单地说就是下面的代码
import React, {useEffect} from "react";
function Form() {
useEffect(() => {
// Do whatever you want after first render
// Put your code here
}, [])
}
您可以使用React Hooksuseffect
实现您的目的
简单地说就是下面的代码
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钩子