
오늘은 영혼을 갈아내면서 코딩했다. 코드 구조가 복잡해지면서 설계를 다시 해야됐고 그 과정에서 많은 구조가 바뀌었다. 최대한 간결하고 재사용성을 높이게 작성하려고 했다. 하지만 기능 복잡할수록 코드가 많아지는건 어쩔 수 없었다. 할 일이 산더미처럼 불어났다. 구조를 설계하고 공책에 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 });
  };