onClick 内联函数与外部函数的工作方式不同
onClick inline function works different from outside function
我有一个可能很容易解释的新手问题。我有一个添加了 onClick 属性 的图像。如果我调用内联函数来记录某些内容,它会按预期工作。每当单击图像时,它都会记录到控制台。但是,每当我在那里调用外部函数时,它每秒都会被点击一次,这是因为我每秒都有数据更新部分代码。
我的问题是,为什么内联函数有效而其他方法无效?我在这里错过了什么?
内联版本...
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={() => { console.log("button clicked");}}/>
</>
);
以及另一种无法按预期工作的方式...
function handleClick() {
console.log('The link was clicked.');
}
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={handleClick()}/>
</>
);
在您的示例中,您通过将其写为 handleClick()
来在加载组件后立即调用函数,因此浏览器不会等待您点击它。
handleClick =()=> {
console.log('The link was clicked.');
}
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={handleClick}/>
</>
);
我有一个可能很容易解释的新手问题。我有一个添加了 onClick 属性 的图像。如果我调用内联函数来记录某些内容,它会按预期工作。每当单击图像时,它都会记录到控制台。但是,每当我在那里调用外部函数时,它每秒都会被点击一次,这是因为我每秒都有数据更新部分代码。
我的问题是,为什么内联函数有效而其他方法无效?我在这里错过了什么?
内联版本...
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={() => { console.log("button clicked");}}/>
</>
);
以及另一种无法按预期工作的方式...
function handleClick() {
console.log('The link was clicked.');
}
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={handleClick()}/>
</>
);
在您的示例中,您通过将其写为 handleClick()
来在加载组件后立即调用函数,因此浏览器不会等待您点击它。
handleClick =()=> {
console.log('The link was clicked.');
}
return(
<>
<SettingsButton src="./img/leaf.png" alt="" onClick={handleClick}/>
</>
);