Route에 path 속성에 아무것도 전달하지 않으면 어떻게 될까요?switch를 알아보기 우선은 Route에 path 속성 값을 전달하지 않으면 어떻게 되는지 부터 알아봅시다. 해당 예시에는 3개의 라우트가 있고, 맨 마지막 라우트에는 path 속성을 전달하지 않았습니다. 결과는 "localhost:3000/"에 접속하니 path 값이 "/"인 Home 컴포넌트와 path 값이 없는 NotFound 컴포넌트가 둘 다 보이는 군요. 즉 path를 전달하지 않으면 어떤 요청에도 항상 나타나게 됩니다. "localhost:3000/about"에 접속하면 우리가 설정한 세 개의 컴포넌트가 다 보이게 됩니다. 이럴 때 스위치를 사용하시면 됩니다.switch 사용해보기스위치는 라우터들을 묶은 다음, 가장 먼저 p..
match와 location을 알아보도록 하겠습니다.BrowserRouter와 우리의 App을 연결하면 어떻게 된다고 했었나요? 라우터가 history api에 접근할 수 있고, Route에 연결된 컴포넌트에 match와 location, history props를 전달합니다. 이번 포스팅에서는 match와 location에 대해서 알아보고 path와 querystring을 받아오도록 하겠습니다. 이전 예시에 위의 코드를 복사해서 붙여넣어주세요. 라우트가 하나이고, "/"에 연결되어 있기 때문에 앱을 실행하면 크게 Home이라는 글자가 적힌 것을 볼 수 있습니다. 페이지가 에러없이 작동되면 F12를 눌러 구글 개발자 모드를 실행하고 콘솔 창을 확인해주세요. 우선은 나온 값들을 하나하나씩 알아보도록 하겠습..
리액트 라우터를 배워봅시다.라우팅이란 무엇일까요? 간단히 설명하자면 우리의 요청(url)에 맞게 연결해주는 것이라고 생각해주시면 됩니다. 우리는 url을 통해서 어떤 요청을 할까요? 우선 url이 어떤 형태인 지를 보겠습니다. 구글에 리액트 라우터라고 검색했을 때 url의 형태입니다. 파란부분(https)는 프로토콜입니다. 그리고 주황색 부분(www.google.co.kr)은 호스트 네임이라고 합니다. 중요한 건 호스트 네임 뒷부분에 있는 것들입니다. 초록색 부분(search)는 path name이라고 하고 "?"뒤에 있는 부분은 쿼리스트링(querystring)이라고 합니다. 또 페이지 내에서 위치를 표시할 때는 # 형태로 url이 좀 더 추가되기도 하는데 이 부분은 hash라고 표현합니다. 이렇게 용..
먼저 다운로드 해야할 것들이 있습니다.저번 시간에 만든 버튼 앱에 리덕스를 적용시키려면 우선 다운 받아야할 것들이 있습니다. yarn add redux react-redux 해당 명령어를 콘솔에서 실행시켜주세요. redux와 react-redux를 다운받을 수 있습니다.해당 모듈들을 다운로드 했다면 이제 리덕스 폴더를 만들어보도록 하겠습니다. src/reducers/index.js 파일을 만들어주세요. 예제에서는 리듀서를 하나로 사용하지만 프로젝트가 커지면 여러개의 리듀서를 사용하고 하나로 통합하는 경우도 있습니다. 예제는 간단한 것이 좋으므로 reducers 폴더 안에 index에 모든 것을 다 정의해보도록 하겠습니다.액션 만들기먼저 정의해야할 것은 액션입니다. 액션은 어떤 행동을 할 지 정의해주는 것..
리액트의 데이터 흐름은 어떻게 진행되나요?리액트는 부모에서 자식으로 데이터가 흘러갑니다. 그래서 주황색(부모)에서 주황색(자식) 까지 데이터가 전달되려면 그 사이의 많은 컴포넌트들을 거쳐가게 됩니다. 이런 거쳐가는 과정이 많아질수록 코드가 늘어나고 복잡해집니다. 리액트 카테고리에서 이전에 다뤘던 콘텍스트가 중간을 거치지 않고 자식 컴포넌트에 바로 전달했듯이 리덕스도 똑같다고 생각하시면 됩니다.왜 리덕스를 알아야 할까요?리덕스를 다룰 수 있게 되면 어려운 프로그램을 쉽게 만들 수 있습니다. 여러 과정을 거치지 않고, 사용할 컴포넌트에 연결해서 사용하면 되기 때문입니다. 이처럼 좀 더 프로그램을 쉽게 작성하기 위한 것이 첫번째 이유고, 두번째 이유는 리덕스라는 것이 이제는 보편적인 개념이 되었기 때문입니다...
로컬 스토리지를 확인해보세요.개발자모드(크롬에서 F12)를 누르고 Application 탭을 눌러보세요. 좌측에 local storage가 있는 것을 확인할 수 있습니다. 눌러보면 key와 value로 이루어진 형태를 볼 수 있습니다. 다른 페이지를 실행 중에 로컬스토리지를 확인하셨다면 이미 많은 데이터들이 저장되어 있는 것을 확인할 수 있습니다.로컬스토리지란 무엇일까요?세션이나 쿠키 같이 데이터를 저장하는 장소 중의 하나입니다. 로컬스토리지는 일정한 기간이 지나면 삭제되는 세션과는 달리 데이터의 만료기간이 없이 계속 저장됩니다. 데이터의 값은 항상 문자로 저장하셔야 하고, 간편하게 불러올 수 있습니다. 간단한 예시를 통해서 사용법을 배워보도록 하겠습니다.getItem과 setItem데이터의 값을 불러올..
ref의 역할은 무엇일까요?특정 엘리먼트를 사용해야 할 때 우리는 그 엘리먼트에 아이디를 주고, 그 아이디를 통해서 해당 엘리먼트를 사용합니다. jsx를 통해서 엘리먼트에 아이디 값을 주면 어떻게 될까요? 리액트 컴포넌트의 경우 여러번 사용될 수 있습니다. 그래서 jsx를 통해서 전달된 아이디를 가진 엘리먼트들이 재사용된 만큼 나타나게 됩니다. 즉 동일 아이디를 가진 엘리먼트들이 생기게 되는 것이죠. 그래서 리액트 컴포넌트에서는 아이디값을 주지 않고, className으로 클래스 값만 주는 것입니다. 아이디는 없지만 특정 엘리먼트를 지정해야할 때 사용하는 것이 ref입니다. 리액트에서 엘리먼트나 컴포넌트의 id 역할을 하는 것이 ref(reference) 입니다. ref 사용해보기버튼을 누르고 난 뒤에 ..
sass란 무엇일까요?완벽한 언어란 없습니다. 계속해서 수정해나가면서 점점 괜찮아지는 수 밖에 없죠. css란 언어도 그렇습니다. 웹페이지를 꾸밀 때 당연히 사용해야할 언어이지만 한계가 많은 언어입니다. 여러 선택자를 통해 효과를 주다보면 금방 코드의 양이 늘어나고 코드의 양이 늘어나면 그에 따라서 또 복잡해집니다. 이에 여러가지 해결책들이 생겼고, sass도 그 해결책 중의 하나라고 생각하시면 됩니다. sass는 기초 언어에 힘과 우아함을 더해주는 css의 확장이다. 위의 말에도 나와 있듯이 css에서의 한계점들을 sass는 여러가지 기능들을 추가해서 해결하려고 하죠.리액트 프로젝트에 sass를 설정해봅시다.예전에는 yarn eject 명령어를 통해서 웹팩 설정을 해줬어야 하지만 이제는 간단하게 sas..
css module이란?css은 모듈은 css를 전역적이지 않고 지역적으로 사용할 수 있게 만들어 줍니다. 가령 클래스 이름이 "App_app__1JlHe" 와 비슷한 형태로 되어 있는 것들을 본 적이 있으신가요? 이런 이름으로 되어 있는 것이 css module이 적용되어 있는 것입니다. App은 파일의 이름이고, app은 클래스네임, 그리고 1JlHe은 랜덤으로 생성된 해쉬입니다. 이처럼 지역적으로 바꿔주면서 이름도 절대 안겹치도록 바꿔주기 때문에 많이 사용합니다. 간단히 말하면 css 파일에 .big이라는 값이 들어가 있더라도 파일이 다르면 둘은 다른 값이 됩니다. 리액트에 적용시키기리액트가 업그레이드 되면서 css 모듈을 적용시키는 방법이 장난아니게 쉬워졌습니다. css 파일 이름과 확장자 사이에..
css reset을 사용하는 이유각 브라우저마다 기본적으로 태그가 갖고 있는 디자인은 다릅니다. 단순히 표현하자면 각자가 예쁘다고 느끼는 것이 다르기 때문에 똑같아야 하는 것들만 똑같고, 마진 같이 자율적으로 값을 줄 수 있는 것은 브라우저에서 예쁘다고 느낀 것만큼 준 것입니다. 그런 기본적인 값들이 다르기 때문에 css reset을 통해서 스타일을 없앤 후에 값을 주었던 것이죠.css의 all 속성엘리먼트에 적용된 값들을 초기화할 수 있게 만들어 주는 것이 all 속성입니다. 줄 수 있는 값은 initial, inherit, unset이 있습니다. 아래와 같이 여러 태그들이 있다고 가정해보세요. 이 태그들은 기본적인 스타일들을 갖고 있습니다. 이제 이 태그들에 기본 스타일을 없애보도록 하겠습니다. al..