Javascript 为什么多个useEffect不能相互覆盖

Javascript 为什么多个useEffect不能相互覆盖,javascript,reactjs,react-native,react-hooks,use-effect,Javascript,Reactjs,React Native,React Hooks,Use Effect,我不熟悉生命周期钩子,请原谅,如果这是非常基本和理解的,但我不明白为什么所有不同的useffect方法的调用都不同 我知道JavaScript不支持函数重载 所以如果我写这个 add(){ console.log("asd") } add(c){ console.log("asdfgh"); } add();//asdfgh 这将打印asdfgh,即使在没有参数的情况下调用它 那么,为什么所有useffect函数都会在名称相同的情况下执行呢?在示例代

我不熟悉生命周期钩子,请原谅,如果这是非常基本和理解的,但我不明白为什么所有不同的
useffect
方法的调用都不同

我知道JavaScript不支持函数重载

所以如果我写这个

add(){
  console.log("asd")
}
add(c){
console.log("asdfgh");
}
add();//asdfgh
这将打印
asdfgh
,即使在没有参数的情况下调用它


那么,为什么所有useffect函数都会在名称相同的情况下执行呢?

在示例代码中,您是在前两个调用中定义函数,而不是使用它们。使用多个
useffect
s时,调用
useffect(myEffectFunction)
多次。这类似于您的代码是这样编写的:

function add(a, b){
  console.log(a + b)
}
add( 3, 5);// Calling your function the first time.
add( 1, 2);// Calling your function the second time.
请注意,这在结构上与下面的代码没有什么不同,下面的代码就是如何在功能组件中使用
useffect
——您没有重新定义
useffect
,您只是使用不同的参数调用
useffect
两次

function MyFirstEffect(){
  ...
}
function MySecondEffect(){
  ...
}
useEffect( myFirstEffect, [] ) // Calling useEffect once.
useEffect( mySecondEffect, [] ) // Calling useEffect a second time.
审查文件可能会有所帮助;您可以看到,在文档示例中,函数是在
useffect
的参数中定义的,但是
useffect
本身只是一个被调用的函数


基于注释更新:

在示例代码中,您是在前两个调用中定义函数,而不是使用它们。使用多个
useffect
s时,调用
useffect(myEffectFunction)
多次。这类似于您的代码是这样编写的:

function add(a, b){
  console.log(a + b)
}
add( 3, 5);// Calling your function the first time.
add( 1, 2);// Calling your function the second time.
请注意,这在结构上与下面的代码没有什么不同,下面的代码就是如何在功能组件中使用
useffect
——您没有重新定义
useffect
,您只是使用不同的参数调用
useffect
两次

function MyFirstEffect(){
  ...
}
function MySecondEffect(){
  ...
}
useEffect( myFirstEffect, [] ) // Calling useEffect once.
useEffect( mySecondEffect, [] ) // Calling useEffect a second time.
审查文件可能会有所帮助;您可以看到,在文档示例中,函数是在
useffect
的参数中定义的,但是
useffect
本身只是一个被调用的函数


根据评论进行更新:

我的问题是,即使我定义了多个useEffect,每次调用useEffect都是如此。但当我多次定义同一个函数名时,只调用一个函数。为什么会这样?@Aishwarya这个答案已经解释了这一点。一个类中的方法定义与另一个函数中的函数调用完全不同。@Aishwarya我已经添加了更多的解释,这有帮助吗?我的问题是,即使我定义了多个useEffect,每次调用useEffect都会产生多个useEffect。但当我多次定义同一个函数名时,只调用一个函数。为什么会这样?@Aishwarya这个答案已经解释了这一点。类中的方法定义与另一个函数中的函数调用完全不同。@Aishwarya我添加了一些解释,这有帮助吗?