Javascript 为什么在下面的代码中useffect钩子使用大括号,但没有return语句,它仍然有效?
读了这篇文章后,我仍然有点困惑。为什么下面的代码useEffect使用大括号,但没有返回它仍然有效?不确定我是否误解了什么。Javascript 为什么在下面的代码中useffect钩子使用大括号,但没有return语句,它仍然有效?,javascript,reactjs,ecmascript-6,react-hooks,arrow-functions,Javascript,Reactjs,Ecmascript 6,React Hooks,Arrow Functions,读了这篇文章后,我仍然有点困惑。为什么下面的代码useEffect使用大括号,但没有返回它仍然有效?不确定我是否误解了什么。以下是示例: import React,{useEffect,useState} from "react" function App() { const [resourcetype,setresourcetype]=useState("posts") useEffect(()=>{ console.lo
以下是示例:
import React,{useEffect,useState} from "react"
function App() {
const [resourcetype,setresourcetype]=useState("posts")
useEffect(()=>{
console.log("render")
},[resourcetype])
return (
<div>
<button onClick={()=>setresourcetype("try")}>try</button>
<button onClick={()=>setresourcetype("unknown")}>unknown</button>
</div>
);
}
export default App;
import React,{useffect,useState}来自“React”
函数App(){
const[resourcetype,setresourcetype]=useState(“posts”)
useffect(()=>{
console.log(“呈现”)
},[resourcetype])
返回(
setresourcetype(“try”)}>try
setresourcetype(“未知”)}>unknown
);
}
导出默认应用程序;
以下是有关useffect
挂钩的一些信息:
本质上,
useffect
充当componentDidMount
,componentdiddupdate
,以及componentWillUnmount
。这些函数在组件生命周期的不同部分由React调用,不需要return
语句即可工作,因为您可以在不使用return
语句的情况下调用函数,就像使用return
语句调用函数一样。useffect
是React钩子,用于在功能组件中执行副作用。
根据示例代码,只要resourcetype
变量发生更改,就会运行此useffect
。
根据useffect
的文档,它接受函数作为参数并执行该函数。
根据你的样本代码
useEffect(()=>{
console.log("render")
},[resourcetype])
根据useffect
的文档,您传递给useffect
的函数没有返回任何内容。如果您的函数返回另一个函数,则该函数将在您的组件卸载时执行
useEffect(()=>{
console.log("Mounted")
return () => { console.log("component unmounted")}
},[])
底线是我们不想/不需要返回任何值(字符串、数字)
etc)从我们传递给useffect
hook的函数
与函数声明或表达式一样,带块的箭头函数的返回语句也是可选的。如果省略它,则函数返回未定义的
您的意思是在arrow函数中使用block时不需要添加return?如果不使用return,则带block的arrow函数仍将返回未定义的值?有问题吗?我记得useEffect返回用于清理的另一个函数时