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我添加了一些解释,这有帮助吗?