mad*_*ird 3 reactjs react-hooks
在 React 中,我知道下一个代码在 mount 中调用 foo 一次
(...)
function foo() {
return {
id: 1,
text: 'hello',
}
}
const App = () => {
const [value, setter] = useState(foo);
(...)
Run Code Online (Sandbox Code Playgroud)
但是如果我将 foo(useState 的参数) 更改为 foo() 如果应用程序正在重新渲染,则此代码将调用 foo 。
我知道 foo 和 foo() 之间的区别,但我知道为什么会出现这种差异
该代码的first(second())
意思是调用second
,并将其结果传递给first
。因此,每次运行这样的行时,second
都会被调用。交换代码中的名称,我们得到useState(foo())
,它的行为是相同的。每次该行运行时,foo
都会被调用。
至于为什么其他版本只调用它一次,那是因为useState
钩子被设计成如果它接收到一个函数,它只会在第一次渲染时调用该函数。在后续渲染中,您仍然会传入该函数,但 React 认为这不是第一次渲染,因此它不会调用您的函数。
归档时间: |
|
查看次数: |
54 次 |
最近记录: |