오늘은 영혼을 갈아내면서 코딩했다. 코드 구조가 복잡해지면서 설계를 다시 해야됐고 그 과정에서 많은 구조가 바뀌었다. 최대한 간결하고 재사용성을 높이게 작성하려고 했다. 하지만 기능 복잡할수록 코드가 많아지는건 어쩔 수 없었다. 할 일이 산더미처럼 불어났다. 구조를 설계하고 공책에 To Do 리스트를 작성하면서 차근차근 진행했다.
<div onClick={handleFocusTestCase('testCase')}>
<h2>Test Case</h2>
{focusTestCase ? ( //
<InputTestCase //
testCases={content.testCase}
handleInputTestCase={handleInputTestCase}
handleTaskButton={handleTaskButton}
handleTestCaseQuantity={handleTestCaseQuantity}
/>
) : (
<ShowTestCase //
testCases={content.testCase}
inputRegex={content.answer}
handleIsCorrectRegTotal={handleIsCorrectRegTotal}
handleInputCapture={handleInputCapture}
handleTestCaseQuantity={handleTestCaseQuantity}
/>
)}
</div>
handleCaptureInput
{testCase.task === 'capture' ? (
isCaptuerInput ? (
captureInputArray.map((el) => <p class="found">{el}</p>)
) : (
testCase.groups.map((el, idx) => (isCorrectRegGroups[idx] ? <p class="found">{el}</p> : <p>{el}</p>))
)
) : (
<></>
)}
const handleIsCorrectRegTotal = (e) => {
const result = e.indexOf(false) === -1;
if (result !== isCorrectRegTotal) setIsCorrectRegTotal(result);
};
const makeTestCase = () => {
return { task: 'match', target: '', groups: [] };
};
const [content, setContent] = useState({
title: '',
testCase: [makeTestCase()],
testCaseTarget: 'deprecated',
answer: '',
explanation: '',
});
const handleInputTestCase = (idx) => (e) => {
const newTestCase = content.testCase.slice();
newTestCase[idx].target = e.target.value;
setContent({ ...content, testCase: newTestCase });
};
+
버튼을 누르면 TestCase 항목이 추가됨-
버튼을 누르면 해당 항목이 삭제됨 const handleTestCaseQuantity = (key, idx) => (e) => {
let newTestCase = content.testCase.slice();
if (key === 'add' && newTestCase.length < 5) {
newTestCase.push(makeTestCase());
} else if (key === 'delete' && !!idx && newTestCase.length > 1) {
const front = newTestCase.slice().splice(0, idx);
const back = newTestCase.slice().splice(idx + 1);
newTestCase = [...front, ...back];
}
console.log(newTestCase);
setContent({ ...content, testCase: newTestCase });
};