在React's documentation中出现以下示例:
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(
element,
document.getElementById('root')
);
}
setInterval(tick, 1000);
此代码有效,但我不理解如果ReactDOM.render
在element
范围内,const element
怎么可能调用tick()
。
我了解在javascript中,由于作用域的原因,无法从外部调用函数内部的变量(在这种情况下为常量)。那么,为什么或此React代码如何工作?
答案 0 :(得分:0)
setInterval(tick, 1000);
tick
是每个1 secs
间隔定义的回调函数。
因此,在调用tick
时,在其主体内有const element
的定义。
因此,它在tick
范围内并且可以访问。
答案 1 :(得分:0)
我想您只是忘记了在ReactDOM.render
范围内您还叫过tick
。这意味着ReactDOM.render
和const element
都在tick
函数的范围内
答案 2 :(得分:0)
如果const element
不在函数范围内,那么它将无法访问它,但是请在此处检查函数tick()
是什么在调用{{1} },并且在ReactDOM.render
内定义了常量element
,因此function tick()
的render方法完全可以访问react
常量,请正确检查花括号在哪里闭合,在element