개발/🟦 React
🟦 [React] onclick={함수()}, onclick={() => 함수()} 차이점
비니_
2025. 3. 18. 10:21
728x90
onclick={함수()} 와 onclick={() => 함수()} 의 쓰임새
=> 사실 차이를 잘 몰라서 뭐가 다른 건지 몰랐는데 혼자 해보니 만들어 보니 알게 됨❗
| onclick={함수()} | onclick={() => 함수()} |
| 렌더링 될 때 실행해버림 (즉시 실행) | click할 때만 함수를 실행 |
✅구현하려고 하는 동작: 탭을 누르면 내가 누른 탭의 index를 받아온다.
내가 했던 방법 👇 => onclick={ handleTabClick(index) }
import { useState } from "react";
import { tabName, tabData } from "../data/tabData";
export default function TabComponent(){
const [activeTab, setActiveTab] = useState(0) // 현재 선택된 탭의 index
const handleTabClick = (index) => {
setActiveTab(index);
console.log(index);
}
return(
<>
test
<ul className="tab-list">
{
tabName.map((tab, index) => (
<li
key={index}
className={activeTab === index ? "active" : ""}
><button onClick={handleTabClick(index)}>{tab}</button></li>
))
}
</ul>
<div className="tab-con-list">
<div className="tab-con"></div>
</div>
</>
)
}
🚫 오류 내용

=> 리렌더링이 너무 많이 되고 있다는 오류!
=> index가 찍히긴 하지만 내가 누르지 않을 때도 계속 찍히고 있음
올바른 방법 👇 => onclick={ () => handleTabClick(index) }
import { useState } from "react";
import { tabName, tabData } from "../data/tabData";
export default function TabComponent(){
const [activeTab, setActiveTab] = useState(0) // 현재 선택된 탭의 index
const handleTabClick = (index) => {
setActiveTab(index);
console.log(index);
}
return(
<>
test
<ul className="tab-list">
{
tabName.map((tab, index) => (
<li
key={index}
className={activeTab === index ? "active" : ""}
><button onClick={() => handleTabClick(index)}>{tab}</button></li>
))
}
</ul>
<div className="tab-con-list">
<div className="tab-con"></div>
</div>
</>
)
}
728x90