반응형
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>
);
}
반응형
'개발 저장소 > 개발 지식 저장소' 카테고리의 다른 글
[React.js] propTypes로 prop 검사하기 (0) | 2022.12.14 |
---|---|
[React.js] React.memo로 변화가 필요한 부분만 rendering 하기 (0) | 2022.12.14 |
[Vscode] 사용중인 단축키 (0) | 2022.12.13 |
[Vscode] 동일한 단어 한꺼번에 선택, 수정 (0) | 2022.12.13 |
[React.js] input 입력 값 가져오기(SyntheticBaseEvent) (0) | 2022.12.13 |