개발 저장소/개발 지식 저장소
[React.js] JSX 구문에서 이벤트 리스너 넘기기
이거비버
2022. 12. 14. 14:08
반응형
function App() {
const [value, setValue] = React.useState("Save Changes");
const changeValue = () => {
setValue("Revert");
};
return (
<div>
<Btn text={value} onClick={changeValue} /> // 이건 이벤트리스너가 아니고 prop이다
</div>
);
}
Btn 컴포넌트를 불러와 이벤트를 발생시킬 때
실제 이벤트는 컴포넌트 내부의 함수에서 동작한다.
App의 Btn컴포넌트 생성문에 작성한 onClick은 그저 prop일 뿐이다.
즉, Btn컴포넌트 코드에서 위의 onClick prop을 받아 실행시켜줘야 한다.
function Btn({ text, onClick }) {
return (
<button
onClick={onClick} // prop을 받아 이벤트리스너 실행
style={{
backgroundColor: "tomato",
color: "white",
padding: "10px 20px",
border: 0,
borderRadius: 10,
}}
>
{text}
</button>
);
}
prop으로 전달되는 onClick 이라는 key가 헷갈릴 수 있으니
아래와 같이 수정
function Btn({ text, changeValue }) {
return (
<button
onClick={changeValue}
style={{
backgroundColor: "tomato",
color: "white",
padding: "10px 20px",
border: 0,
borderRadius: 10,
}}
>
{text}
</button>
);
}
function App() {
const [value, setValue] = React.useState("Save Changes");
const changeValue = () => {
setValue("Revert");
};
return (
<div>
<Btn text={value} changeValue={changeValue} />
<Btn text="Continue" />
</div>
);
}
반응형