你可以通过在组件中声明 事件处理 函数来响应事件:
function MyButton() {
function handleClick() {
alert('You clicked me!');
}
return (
<button onClick={handleClick}>
点我
</button>
);
}
注意,onClick={handleClick} 的结尾没有小括号!不要 调用 事件处理函数:你只需 把函数传递给事件 即可。当用户点击按钮时 React 会调用你传递的事件处理函数。
在 React 中,<button onClick={handleClick}>click me</button> 和 <button onClick={handleClick()}>click me</button> 有重要的区别:
1. <button onClick={handleClick}>click me</button>
含义 :将
handleClick函数作为参数传递给onClick事件处理属性。此时,handleClick是一个函数引用,没有被立即调用。行为 :当按钮被点击时,React 会调用这个
handleClick函数。这是正确的事件处理方式,符合 React 事件处理的规范,能够确保事件在用户交互时被触发。
2. <button onClick={handleClick()}>click me</button>
含义 :在 JSX 中,
handleClick()会立即被调用,也就是说,当组件渲染时,handleClick函数会被执行,并且它的返回值会被赋值给onClick属性。行为 :如果
handleClick函数没有返回任何内容(即返回值为undefined),那么实际上onClick属性的值是undefined,这会导致事件处理程序无法正常工作。如果handleClick函数返回了一个函数,那么返回的这个函数会被当作事件处理函数,但这种情况比较少见且容易引起混淆。这种写法通常会导致函数在组件渲染时就被执行,而不是在按钮点击时执行,这很可能不是我们想要的行为。
例如,假设 handleClick 是一个简单的函数:
function handleClick() {
console.log('Button clicked');
}
对于 <button onClick={handleClick()}>click me</button>,在组件渲染时就会输出 'Button clicked' 到控制台,而不会在按钮点击时输出。而 <button onClick={handleClick}>click me</button> 则会在按钮点击时输出 'Button clicked'。