inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[2주차 발자국] 인프런 워밍업 클럽 스터디 0기 FE

학생
3

회고

벌써 과정의 2/3가 끝났다는 것이 믿기지 않는다.

일주일 간의 회고를 해보자면, 아쉬움이 크다. 이번주는 시간 투자를 많이 하지 못했기 때문이다.

저번주에 의욕 넘치게 미션을 진행하느라 밀려났던 다른 일을 처리하는데에 또 시간을 썼다.

앞으로 일이든 취준이든 제대로 하려면 시간 분배하는 법을 익혀야 한다는 생각이 들었다.

직장 등의 일과 병행하는 다른 분들이 존경스러울 뿐이다.

하지만 모두 끝냈기 때문에 이제는 공부에 전념할 일밖에 남지 않았다.

모든 미션을 반드시 갈아치워버리겠다.

 

강의를 들으며 그동안 키워드만 알고 이해하지는 못하고 있었던 개념들을 접하면서 굉장히 반가웠다.

특히 프로젝트를 구하는 글에서 종종 SPA 할 줄 아시는 분이라는 글을 봤었는데, 정확히 무슨 뜻인지

이해를 하지는 못했었다. 하지만 이번에 공부하면서 정확히 알게 되어 상당한 쾌감을 느꼈다. 그밖에도 평소 무료 사이트의

클론 코딩을 무작정 따라하면서 접했던 개념들을 짚고 넘어가게 되어 재미있었다.

모닥불에 종종 들어오시는 강사님으로부터 유익한 정보를 얻으려면 질문할 거리가 있어야 한다. 질문할 거리가 있으려면 스

스로의 힘으로는 알아내지 못하는 부분이 뭔지 구별할 수 있을 정도로 공부가 되어있어야 한다. 따라서 마지막 주 만큼은 진

도를 잘 따라가 질문을 생성할 수 있게끔 되었으면 좋겠다. 리액트 및 프로젝트 부분은 특히나 한 번 보고는 잊어버릴 것 같으

므로 여러번 공부를 해야할 것 같다. 시간은 한정되어있으므로 다음주는 선택과 집중이 필요해질지도 모르겠다.

 

이번주 반성

다음주 목표


강의 요약

이번주는 JS프로젝트로 자바스크립트를 마무리하고, 리액트를 시작했다.

(자바스크립트 섹션 9 & 리액트 섹션 1 ~ 5)

강의 요약은 기억에 남는 부분 위주로, 최대한 개념 부분만 진행했다.

REACT

React에 관해

React Component

Virtual DOM(가상 돔)

Create React App

SPA(Single Page Application)

JSX(Javascript syntax extension)

React State

React Hooks

TailWindCSS

Styled Component


미션

미션7(Day7). 타이핑 테스트 앱

자바스크립트 섹션 9에서 다루었던 stopwatch앱을 복습하면서 구현을 시작했다.

아직 미완성이고, 구현한 부분은 아래 부분이다.

image

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Typing Test App!</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="wrapper">
      <h1>타이핑 스피드 측정</h1>
      <div class="data-container">
        <div id="errors">
          ERRORS
          <h2>0</h2>
        </div>
        <div id="time">
          TIME
          <h2>20S</h2>
        </div>
        <div id="accuracy">
          % ACCURACY
          <h2>100</h2>
        </div>
      </div>
      <div id="sentence">아래를 클릭해서 게임을 시작하세요.</div>
      <input id="input" type="text" />
    </div>
    <script src="script.js"></script>
  </body>
</html>

이 시작화면에서는 텍스트 입력 부분을 클릭하면 게임이 시작되도록 해야 하기에, event listener를 이용했다.

// 1. 입력 부분에 클릭했을 때 게임 시작
input.addEventListener("click", startGame);

image

이 게임화면에서는, 기존에 저장되어있는 등의 문장을 표시해야 하며 카운트다운 타이머를 실행시켜야 한다.

(input과 sentence는 코드 맨 위에 document querySelector로 가져와 지정했으나 여기선 생략함. let i, err...도.)

const startGame = () => {
  i = 0;
  err = 0;
  sec = 20;
  acc = 0;
  interval;
  input.removeEventListener("click", startGame);
  // 1-1. 문장 보여주기
  sentence.textContent = sentences[i];
  // 1-2. 시간초 카운트다운 시작
  interval = setInterval(timer, 1000);
...
const timer = () => {
  sec -= 1;
  timeH2.innerText = `${sec}S`;
  if (sec === 0) {
    gameEnd();
  }
};

여기서 stopwatch 프로젝트에서 배웠던 setInterval를 사용하였다.

image

시간 초과가 나거나 주어진 문장을 모두 입력할 경우 이 화면으로 온다. 여기서 clearInterval를 사용하였다.

const gameEnd = () => {
  clearInterval(interval);
  // 3. 타임 오버 혹은 문장 전부 클리어
  // 다시 시작 버튼 활성화

이 아주 사소한 부분 해결 과정에서 하고자 하는 것은 setInterval과 clearInterval의 복습이다.

setInterval()은 주어진 함수를 주어진 간격마다 실행하는 함수이다.

clearInterval()은 주어진 interval의 반복을 중단하는 함수이다.

const sayHello = () => {
   console.log("hello");
}

let interval;
setInterval(sayHello, 1000);
clearInterval(interval); // 반복 중단

프론트엔드

답변 0