๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Hooks

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2023. 12. 19.

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

 

์ด ์…‹์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ Œ๋”๋ง์ด ๋‹ค์‹œ ๋œ๋‹ค.

 

'๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ > JavaScript, TS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS Basic Synax(์ž๋ฃŒํ˜•)  (0) 2023.12.20
JS Basic Synax(๋ณ€์ˆ˜)  (1) 2023.12.20
Props์™€ State์˜ ์ฐจ์ด  (0) 2023.12.19
State  (0) 2023.12.19
Props, Properties  (1) 2023.12.19

๋Œ“๊ธ€