Til
-
자바스크립트 - async / await?JavaScript/동작원리 2020. 9. 19. 15:42
aysnc await이란? 콜백 함수나 프로미스처럼 비동기를 다루는 자바스크립트 패턴 중 하나이며 가장 최근에 나온 Es7문법이다. 프로미스랑은 조금 다른 사용법을 가지고 있으며 프로미스를 이용하는 아이라고 생각하면 된다. aysnc 키워드 예제를 통해 async 키워드부터 알아보자. // async 키워드가 없는 일반 함수 function myFunc(){ return 'func'; } // async 키워드가 있는 함수 async function myAsync(){ return 'async'; } console.log(myFunc()); console.log(myAsync()); 출력 화면 출력 결과를 보면 서로 다른 것을 확인할 수 있다. 첫 번째 myFunc() 함수는 생각했던 대로 func가 반..
-
자바스크립트 - PromiseJavaScript/동작원리 2020. 9. 6. 18:54
Promise란? 자바스크립트에서 비동기 동작을 다루는 하나의 패턴이며, 어떤 일의 진행 상태를 나타내는 객체로, 진행 "상태"와 "값"이라는 속성을 가지고 있는 것을 말한다. Promise가 생긴 이유 Promise 생기기 이전에는 비동기 처리를 콜백 함수나 ajax 메소드를 통해서 처리해왔다. jQuery ajax 메소드 비동기 처리 $.ajax("http://a.com/api/book", (result) =>{ console.log(result); }); 위의 예제는 ajax 메소드를 통해 서버에 응답을 보내고 응답이 왔을 때, 콜백 함수를 통해 result로 응답을 받아 처리하는 예제이다. setTimeout() 비동기 함수 setTimeout()은 비동기 동작을 하는 함수를 말한다. functi..
-
자바스크립트 - this?!JavaScript/기본 2020. 9. 3. 15:42
들어가기 전에, 먼저 대표적으로 JAVA 같은 객체지향 언어에서의 this는 클래스 인스턴스의 레퍼런스 변수를 말한다. 즉, 클래스(자세히는 인스턴스화 된 객체) 자기 자신을 뜻 한다는 의미이다. 하지만 자바스크립트에서 함수의 this 키워드는 다른 언어들과 비교하여 조금 다르게 동작한다. 다르게 동작하기 때문에 많이 헷갈리는 것 같다. 자바스크립트에서는 선언할 때 값이 결정되는 것이 있는데 그것을 클로져라고 하고, 반면에 호출하는 방법에 의해서 값이 결정되는 것이 있는데 그것을 바로 this라고 한다. 그 this를 낱낱이 파헤쳐보도록 하자. this는 대체 무엇인가? 할머니 : 나는 허리가 아프다. (나 === 👵) 아버지 : 나는 다리가 아프다. (나 === 👨) 어머니 : 나는 머리가 아프다. (..
-
React - reselect 사용하기React/라이브러리 2020. 8. 31. 23:37
들어가기에 앞서, 우선 Selector를 먼저 알아야 한다. Selector는 무엇인가? selector는 state에서 필요한 데이터를 가져오거나, 계산을 수행해서 원하는 형태의 데이터를 가져오는 역할을 말한다. 왜 써야 하는가? 다음 예제를 살펴보자. todoApp 리듀서와 getIncompleteTodos selector가 존재한다. // Reducer function todoApp(state = [], action) { switch (action.type) { case GET_ALL_TODOS: return { todos: action.data.todos }; default: return state; } } // Selector function getIncompleteTodos(state) { r..
-
Redux Toolkit이란?Redux 2020. 8. 23. 16:02
Redux Toolkit의 등장 배경 Redux가 처음 등장했을 때 많은 사람들은 우리의 애플리케이션의 모든 상태 관리 문제가 해결될 것이라고 기대했었다. 하지만 많은 개발자들이 Redux 사용에 대해 몇 가지 불편함을 느꼈다. 사용했을 때 불편했던 이유는 Redux 스토어를 구성하는 것은 너무 복잡하며, Redux를 더 유용하게 쓸려면 많은 패키지들을 추가해야 하며, 불필요한 상용구 코드량이 많다는 것이다. 이러한 Redux의 한계를 깨닫고 "효율적인 Redux 개발을위한 공식적이고 독단적인 배터리 포함 도구 세트" Redux Toolkit (RTK)가 개발되었다. 그렇다면 Redux Toolkit를 어떻게 사용하는가? 설치 방법 createAction createAction은 액션 생성자 함수를 반환..
-
미들웨어(Middleware)란?Redux 2020. 8. 22. 00:21
미들웨어(Middleware)란? 액션(action)과 리듀서(reducer) 함수 사이의 중간자라고 하며, 미들웨어를 통해 전달받은 액션을 콘솔에 기록하거나 취소 혹은 다른 종류의 액션을 추가적으로 디스패치(dispatch)할 수 있다. 단, 미들웨어를 설정하지 않는다면 액션은 바로 리듀서에게 보내진다. 리덕스(Redux)에서의 미들웨어는? 리덕스에서 미들웨어는 액션을 디스 패치했을 때 리듀서에서 이를 처리하기에 앞서 사전에 지정된 작업들을 실행한다. 리덕스 미들웨어의 구조 // 미들웨어 기본 구조 const loggerMiddleware = store => next => action => { // 하고자 하는 작업 }; 위 코드는 화살표 함수를 연달아서 사용했는데, 일반 function 키워드로 풀어..
-
[level1] - 같은 숫자는 싫어programmers/level1 2020. 7. 27. 17:20
코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 문제 설명 : 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1]을 return 합니다. arr = [4, 4, 4, 3, 3]..
-
바닐라 자바스크립트 Redux 적용하기Redux 2020. 7. 26. 13:52
바닐라 자바스크립트를 통해 리덕스를 알아보자. 리덕스(Redux)란 무엇인가? 리덕스(Redux)는 자바스크립트 애플리케이션에서 흔히 쓰이는 state container이며, 리액트(React) 뿐만 아니라, 어떠한 자바스크립트 라이브러리와도 연결할 수 있는 state(상태) 관리 라이브러리이다. 예제를 통해 알아보자. 아래 예제를 보면 버튼을 눌렀을 때, count의 수가 증가하거나 감소하는 자바스크립트 코드가 있다. index.html index.js Add 버튼을 눌렀을 때, 숫자가 증가하고 Minus 버튼을 눌렀을 때, 숫자가 감소한다. 이 자바스크립트로 작성된 코드를 리덕스(redux)로 바꾼다면? 아래와 같은 예제가 될 것이다. import { createStore } from "redux";..