Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在下面的代码中useffect钩子使用大括号,但没有return语句,它仍然有效?_Javascript_Reactjs_Ecmascript 6_React Hooks_Arrow Functions - Fatal编程技术网

Javascript 为什么在下面的代码中useffect钩子使用大括号,但没有return语句,它仍然有效?

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

读了这篇文章后,我仍然有点困惑。为什么下面的代码useEffect使用大括号,但没有返回它仍然有效?不确定我是否误解了什么。
以下是示例:

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返回用于清理的另一个函数时