|
8 | 8 |
|
9 | 9 | 예를 들어, 숫자 배열에서 짝수만 필터링하는 로직에 문제가 생겼다고 가정해볼게요. 원래 코드에서는 컴포넌트에서 하는 일이 많아서 어디서부터 문제가 발생한 건지 알기 어려워요. |
10 | 10 |
|
11 | | -현재 컴포넌트에서는 데이터 fetching, 필터링 로직, 상태 업데이트, 사용자 이벤트 처리가 하나의 함수 안에 모여 있어요. 이처럼 책임이 분리되지 않으면, 특정 결과(filteredNumbers)가 잘못되었을 때 어떤 로직에서 문제가 발생했는지 파악하기가 어려워요. 특히 여러 상태 변화가 엮여 있을 경우, 상태 간의 상호작용이나 렌더 타이밍까지 함께 고려해야 하므로 디버깅이 복잡해질 수 있어요. |
| 11 | +현재 컴포넌트에서는 데이터 fetching, 필터링 로직, 상태 업데이트, 사용자 이벤트 처리가 하나의 함수 안에 모여 있어요. 이처럼 책임이 분리되지 않으면, 특정 결과(`filteredNumbers`)가 잘못되었을 때 어떤 로직에서 문제가 발생했는지 파악하기가 어려워요. 특히 여러 상태 변화가 엮여 있을 경우, 상태 간의 상호작용이나 렌더 타이밍까지 함께 고려해야 하므로 디버깅이 복잡해질 수 있어요. |
12 | 12 |
|
13 | 13 | ```tsx |
14 | | -import React, { useState, useEffect } from "react"; |
| 14 | +import { useState, useEffect } from "react"; |
15 | 15 |
|
16 | 16 | function filterEvenNumbers(numbers) { |
17 | 17 | return numbers.filter((num) => { |
18 | | - return num % 2 === 1; |
| 18 | + return num % 2 === 0; |
19 | 19 | }); |
20 | 20 | } |
21 | 21 |
|
@@ -73,28 +73,31 @@ export default ComplexComponent; |
73 | 73 |
|
74 | 74 | ### 간단하게 줄여보기 |
75 | 75 |
|
76 | | -위 코드를 아래 코드처럼 간단하게 줄여서 테스트해볼 수 있어요. 원래 컴포넌트의 상태 관리, 비동기 호출, UI 요소를 제거하고, 핵심 로직인 filterEvenNumbers 함수만 간단한 배열로 테스트할 수 있도록 최소한의 코드로 줄였어요. |
| 76 | +위 코드를 아래 코드처럼 간단하게 줄여서 테스트해볼 수 있어요. 원래 컴포넌트의 상태 관리, 비동기 호출, UI 요소를 제거하고, 핵심 로직인 `filterEvenNumbers` 함수만 간단한 배열로 테스트할 수 있도록 최소한의 코드로 줄였어요. |
77 | 77 |
|
78 | 78 | 이렇게 코드를 단순화하면 복잡한 상태 관리나 네트워크 요청 없이도 문제가 발생하는 조건만으로 에러를 재현할 수 있어요. |
79 | 79 | 이런 방식으로 문제를 단순하게 재현하고, 원인을 찾은 다음 원래 코드에 다시 반영하면 돼요. |
80 | 80 |
|
81 | 81 | ```tsx |
82 | | -import React, { useEffect } from "react"; |
| 82 | +import { useState, useEffect } from "react"; |
83 | 83 |
|
84 | 84 | function filterEvenNumbers(numbers) { |
85 | 85 | return numbers.filter((num) => { |
86 | | - return num % 2 === 1; |
| 86 | + return num % 2 === 0; |
87 | 87 | }); |
88 | 88 | } |
89 | 89 |
|
90 | | -const SimpleComponent = () => { |
| 90 | +function SimpleComponent() { |
| 91 | + const [filteredNumbers, setFilteredNumbers] = useState([]); |
| 92 | + |
91 | 93 | useEffect(() => { |
92 | 94 | const testArray = [1, 2, 3, 4, 5, 6]; |
93 | 95 | const result = filterEvenNumbers(testArray); |
| 96 | + setFilteredNumbers(result); |
94 | 97 | }, []); |
95 | 98 |
|
96 | | - return <div>테스트 중...</div>; |
97 | | -}; |
| 99 | + return <div>filteredNumbers: {filteredNumbers.join(", ")}</div>; |
| 100 | +} |
98 | 101 |
|
99 | 102 | export default SimpleComponent; |
100 | 103 | ``` |
|
0 commit comments