class Comp extends React.Component {
render() {
return (
<div>
<button onClick={() => {
console.log('clicked');
}}>클릭</button>
</div>
);
}
}
onClick 부분은 props로 들어가게 됩니다.
props로 들어간 이벤트는 이벤트 리스너로 등록하게 됩니다.
예시
function Component() {
return (
<div>
<button
onClick={() => {
console.log("clicked");
}}
>
클릭
</button>
</div>
);
}
ReactDOM.render(<Component />, rootElement);
{}
를 사용합니다.{}
안에 이벤트에 등록할 로직을 넣습니다.class Component extends React.Component {
render() {
return (
<div>
<button
onClick={() => {
console.log("clicked");
}}
>
클릭
</button>
</div>
);
}
}
function 컴포넌트와 같은방법으로 기재합니다.
예시
class Component extends React.Component {
state = {
count: 0
};
render() {
return (
<div>
<p>{this.state.count}</p>
<button
onClick={() => {
console.log("clicked");
this.setState((state) => ({
...state,
count: state.count + 1
}));
}}
>
클릭
</button>
</div>
);
}
}
class Component extends React.Component {
state = {
count: 0
};
constructor(props) {
super(props);
this.click = this.click.bind(this);
} // click 함수 안의 this가 클래스를 가리키도록 this를 바인딩 해주기 위해
// consrtuctor 를 만들어 클래스 생성시 this 바인딩 작업을 여기서 하게 함.
render() {
return (
<div>
<p>{this.state.count}</p>
<button onClick={this.click}>클릭</button>
</div>
);
}
click() { // 별도의 함수로 분리
console.log("clicked");
this.setState((state) => ({
...state,
count: state.count + 1
}));
}
}
화살표 함수로 만들게 되면 this 바인딩 작업을 하지 않아도 됩니다.
class Component extends React.Component {
state = {
count: 0
};
// constructor(props) {
// super(props);
// this.click = this.click.bind(this);
// } // 화살표 함수로 만들면 this 바인딩 작업을 하지 않아도 됩니다.
render() {
return (
<div>
<p>{this.state.count}</p>
<button onClick={this.click}>클릭</button>
</div>
);
}
click = () => { // 별도의 함수로 분리
console.log("clicked");
this.setState((state) => ({
...state,
count: state.count + 1
}));
}
}
함수 컴포넌트에서 이벤트를 이용하여 state 변경은 다음에 다룹니다.