import React, { Component } from 'react';
class SimpleHabit extends Component {
****state = {
count: 0,
};
handleIncrement = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return (
<li className="habit">
<span className="habit-name">Reading</span>
<span className="habit-count">{this.state.count}</span>
<button
className="habit-button habit-increase"
onClick={this.handleIncrement}
>
<i className="fas fa-plus-square"></i>
</button>
</li>
);
}
}
export default SimpleHabit;
import React, { useState } from 'react';
const SimpleHabit = () => {
****const [count, setCount] = useState(0);
****const handleIncrement = () => {
setCount(count + 1);
};
return (
<li className="habit">
<span className="habit-name">
Reading
</span>
<span className="habit-count">{count}</span>
<button className="habit-button habit-increase" onClick={handleIncrement}>
<i className="fas fa-plus-square"></i>
</button>
</li>
);
};
export default SimpleHabit;
Class는 사람과 기계를 혼동시킵니다.
this
키워드가 어떻게 작동하는지 알아야만 합니다.복잡한 컴포넌트들은 이해하기 어렵습니다.
각 생명주기 메서드에는 자주 관련 없는 로직이 섞여들어가고는 합니다.
함께 변경되는 상호 관련 코드는 분리되지만 이와 연관 없는 코드들은 단일 메서드로 결합합니다. 이로 인해 버그가 쉽게 발생하고 무결성을 너무나 쉽게 해칩니다.
import React, { Component } from 'react';
class SimpleHabit extends Component {
state = {
count: 0,
};
handleIncrement = () => {
this.setState({ count: this.state.count + 1 });
};
**componentDidMount() {
console.log("SimpleHabit 컴포넌트가 화면에 보입니다!");
document.title = this.state.count;
}
componentDidUpdate() {
console.log("SimpleHabit 컴포넌트가 업데이트 되었습니다!");
document.title = this.state.count;
}**
render() {
return (
<li className="habit">
<span className="habit-name">Reading</span>
<span className="habit-count">{this.state.count}</span>
<button
className="habit-button habit-increase"
onClick={this.handleIncrement}
>
<i className="fas fa-plus-square"></i>
</button>
</li>
);
}
}
export default SimpleHabit;
컴포넌트 사이에서 상태 로직을 재사용하기 어렵습니다.