最近我开始使用ReactJs,想了解在React中定义事件处理程序的最佳实践。以下是我一直在使用的React事件处理程序:
import React, { useState } from "react";
import "./styles.css";
export default function App() {
const [counter, setCounter] = useState(0);
const handleButtonClick = () => {
setCounter(counter + 1);
};
return (
<div className="App">
<button onClick={() => handleButtonClick()}>
Click Me To increase counter
</button>
<div>
<h4>Counter value is: </h4>
{counter}
</div>
</div>
);
}
我也听到过反对这种逻辑的观点。有人认为最好在组件定义之外(例如我们的App
)定义事件处理程序。这样,它变得清晰、简洁,而不是在组件内创建多个函数(无论是事件处理程序还是其他函数)造成混乱。例如:
import React, { useState } from "react";
import "./styles.css";
const handleButtonClick = (setCounter, counter) => () => {
setCounter(counter+1);
};
export default function App() {
const [counter, setCounter] = useState(0);
return (
<div className="App">
<button onClick={handleButtonClick(setCounter, counter)}>
Click Me To increase counter
</button>
<div>
<h4>Counter value is: </h4>
{counter}
</div>
</div>
);
}
第二种方法的CodeSandbox链接
我想知道定义函数的最佳实践是什么?事件处理程序是否也应在函数组件(此例中为App组件
)上方全局定义?