1. ν΄λμ€ν μ»΄ν¬λνΈμ ν¨μν μ»΄ν¬λνΈ
κ³Όκ±°μλ λλΆλΆμ μ»΄ν¬λνΈλ₯Ό μλμ κ°μ΄ ν΄λμ€ λ¬Έλ²μ νμ©νμ¬ μμ±νμμΌλ, μ½λκ° λ€μ κΈΈμ΄μ§κ³ 볡μ‘ν΄μ§λ κ²μ μ€μ΄κΈ° μν΄ μ΅κ·Όμλ ν¨μν μ»΄ν¬λνΈλ‘ μμ±νλ λ°©μμ μ νΈνκ³ μλ€.
class λ°©μμΌλ‘ μμ±λ Counter μ»΄ν¬λνΈ
const { useState, memo, Component } = React;
class Counter extends Component {
constructor(props) {
super(props);
// μ΄κΈ° μν μ€μ
this.state = {
count: 0
};
}
// μΉ΄μ΄ν° μ¦κ° ν¨μ
increment = () => {
this.setState(prevState => ({
count: prevState.count + 1
}));
};
// μΉ΄μ΄ν° κ°μ ν¨μ
decrement = () => {
this.setState(prevState => ({
count: prevState.count - 1
}));
};
render() {
return (
<div>
<h1>{this.state.count}</h1>
<button onClick={this.increment}>Increase</button>
<button onClick={this.decrement}>Decrease</button>
</div>
);
}
}
ν¨μν λ°©μμΌλ‘ μμ±λ Counter μ»΄ν¬λνΈ
const { useState } = React;
const Counter = () => {
const [count, setCount] = useState(0);
const clickHandler = () => count += 1;
return (
<div>
<p>{count}</p>
<button onClick={clickHandler}>Click me</button>
</div>
)
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Counter />);
2. React Hooks
ν΄λμ€ν μ»΄ν¬λνΈμμλ§ μ¬μ©μ΄ κ°λ₯νλ μν(state) λ₯Ό κ΄λ¦¬νκ±°λ Ref λ±μ ν¨μν μ»΄ν¬λνΈμμλ μ¬μ©ν μ μλλ‘ λ±μ₯ν ν¨μλ‘, Reactμμ μ 곡νλ λ΄μ₯ ν¨μλΌκ³ λ³Ό μ μλ€.
μ΄λ¬ν Hookμ ν΄λμ€μμ μ 곡λλ κΈ°λ₯μ κ°μ Έμμ (hooking) μ¬μ©νλ€λ μλ―Έλ‘ λ€μ΄λ°λλ€.
function add(a, b) {
useEffect(() => {...}, []); // x
}
*hookμ μ’ λ₯
useState
useEffect
useReducer
μ΄ μ μ μ¬μ©ν λ λ λλ§μ΄ λ€μ λλ€.