본문 바로가기

전체 글

(220)
20210617 Redux03 : Redux 개요 와 Component를 만드는 과정 정리, Async Action with Redux(MiddleWare 없이) Redux 03 redux 개요 정리 리덕스는 앱에서 사용하는 state, props를 독립적으로 사용하기 위해서 데이터를 처리하는 역할을 함 데이터를 모두 받아 가지고 있기(독립적인 관리를 위해서) 수정 요청있으면 수정하기 필요한 위치에 보내기 리덕스에서 데이터를 가져오는건 useSelector 데이터를 넣어 리덕스에게 수정요청은 dispatch ActionCreator가 데이터를 받아 Action으로 만들고 해당 Action에는 데이터 가공 방식과 해당 데이터가 들어 있다. 이를 dispatch가 받아 전달하여 reducer가 store의 state를 변경함 Component - props(state or function) - Container(ActionCreator - Action - dispat..
20210616 Redux02 : React에 redux 연결01(props, Context전달, Hooks&모듈로 관리), react-redux로 연결(Presentational vs Container , Container 만들기, reac-redux hook 방식) Redux 02 React에 Redux 연결하기 01 : react-redux 안쓰고 연결 store를 props로 전달하는 경우 만들어진 store를 props로 전달하여, store를 사용할 수 있게 함 Props 전달 // index.js ReactDOM.render( , document.getElementById("root") ); 전달 받은 Props로 store 활용하기 Store만 컴포넌트에서 가지게 되면 store의 변화에 반응하거나, store에 변화를 줄수 있음 import logo from "./logo.svg"; import "./App.css"; import { useEffect, useState } from "react"; import { addTodo } from "./redu..
20210616 DataStructure 02 : Queue(큐), Stack(스택), Python&JavaScript DataStructure 02 Queue (큐) 배열과 함께 가장 쉬운 자료구조 중 하나 운영체제, 네트워크 기능에서 많이 쓰임 멀티 태스킹을 위한 프로세스 스케쥴링 방식 구현에 많이 사용됨 (운영체제) 특별히 장단점은 없음 큐의 구조 줄을 서는 행위와 유사함 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 (선입 선출) FIFO(First-In, First-Out 첫번째로 들어간게 첫번째로 나옴) 또는 LILO(Last-In, Last-Out 마지막으로 들어간게 마지막으로 나옴) 방식으로 스택과 꺼내는 순서가 반대임 단순히 어떤것을 꺼내라는 명령이 없고, 꺼내라 라는 명령만 있음(자동으로 당겨지니까) 기능 2가지 : 데이터를 넣는것(Enqueue), 데이터를 꺼내는 것(Dequeue) Data ..
20210616 DataStructure 01 : 자료구조, 알고리즘, Jupyter notebook, Array(1차, 2차 배열), 문제 DataStructure 01 DataStructure & Algorithm (자료구조와 알고리즘) 자료구조 용어 : 자료구조, 데이터 구조, data structure 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화 해야함 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐 효율적 데이터를 관리하는 예 우편번호, 학생 관리(학년, 반, 번호) -> 특정 데이터를 효율적으로 찾을 수 있음 대표적인 자료구조 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등... 알고리즘 용어: 알고리즘, algorithm 어떤 문제를 풀기 위한 절차/ 방법 어떤 문제에 대해, 특정한 입력을 넣으면,..
20210615 Redux01 : Redux의 개념, Store, Action, Reducer, 데이터 구조에 따른 설계, combineReducers, reducers 모듈화 Redux 01 Redux Basic Component들 간의 정보 전달 과정에서 불편함을 느끼고 contextAPI를 사용하는데 Redux는 해당 context에 있는 전역 데이터를 효과적인 관리하는 라이브러리 임 Redux는 Store라는 독립적인 부분 딱 하나 존재하는데(단일 스토어), 어느 Component에서 store의 state를 변경하면 store에서 연관된 다른 Component를 rerender 시킴 단일 스토어 사용 준비 스토어 만들기 import redux 액션 정의 -> 액션을 사용하는 리듀서 만듦 -> 리듀서들을 합침 -> 최종 합쳐진 리듀서를 인자로 단일 스토어를 만듦 스토어 사용하기 import react-redux connect() 함수를 이용해서 컴포넌트에 연결 Actio..
20210615 React14 : JS Array Cheat sheet, 쇼핑몰 프로젝트(ContextAPI, Hooks중심 : Providers, Contexts, Hooks) React 14 JS Array Cheat Sheet React Project : 쇼핑몰 프로젝트 개요 Context API로 상품 리스트와 상품주문의 상태를 공유하고 이를 Hooks를 이용해서 변경하고 사용하는 개발 형태 장바구니에 담기 기능이 있는 쇼핑몰 만들기 기본적인 디자인을 보는 것이 아닌 기능과, 코드 관리에 중점을 둠 기본 컴포넌트 구성 Header : 쇼핑몰 안내 관련 기본적인 Header 형태 Prototypes : 상품이 진열 되는 곳 개별 상품 : video, title, price, description, addButton Order : 장바구니 역할 Prototypes 컴포넌트에서 addButton 클릭시 장바구니로 1개의 수량 씩 추가됨 같은 품목을 중복해서 누르는 경우 장바구니..
20210614 React13 : createPortal(특정 요소에 하위 요소 추가하기), forwardRef(후손 ref 사용하기), SPA 배포(Deploy)특징&이해, Serve패키지 배포, AWS S3 배포, Express 배포, SSR 이해, express를 통한 SSR React 13 React.createPortal : 요소 보내기 React : Portals 부모 컴포넌트의 DOM 계층 구조 바깥에 있는 DOM 노드로 자식을 렌더링하는 최고의 방법 의도하는 실제 DOM Element(부모)에 자식, 후손 요소들을 어디에서 든지 createPortal로 만들어진 Component를 통해 넣을 수 있음 서로 동등한 위치의 A, B Element라도 A에서 작성한 후손 Element를 B의 후손 Element로 들어 갈수 있게 A에서 작성 가능함 다른 곳에서 집어 넣었다고 하더라도 이벤트 버블링은 portal인지 아닌지 상관 없이 부모 Component로(React 기준으로, 실제 DOM 기준이 아니고) 전달 됨 // Modal.jsx : Portal 사용 import ..
20210611 React11 : React Component Test, Testing-library/react, component testing 예제, Refactoring(Function Clear), jest-dom, user-event React 10 React Component Test 기본적으로 개발을 할때 testing 코드를 먼저 작성하고 개발 코드를 작성 Testing-library/react 기존의 jest testing 함수 말고, 더 다양하게 testing을 하기 위한 함수를 제공하는 라이브러리 CRA 프로젝트인 경우 자체적으로 설치 되어 있음 @testing-library/react testing 작성 예시 구현할 요소와 기능 컴포넌트가 정상적으로 생성된다. "button" 이라고 쓰여진 엘리먼트는 HTMLButtonElement 이다. 버튼을 클릭하면, p 태그 안에 "버튼이 방금 눌렸다"라고 쓰여진다. 버튼을 클릭하기 전에는, p 태그 안에 "버튼이 눌리지 않았다"라고 쓰여진다. 버튼 클릭 5초 후에는, p 태그 안..
20210611 React10 : JavaScript Unit Test, JEST, TEST 파일 작성, TEST 코드 함수(to, 비동기) React 10 React Testing JavaScript Unit Test 통합테스트에 비해 빠르고 쉽다. 통합테스트를 진행하기 전에 문제를 찾아 낼 수 있다. (단, 통합테스트 성공 보장은 없음) 테스트 코드가 살아있는(동작을 설명하는) 명세가 됨 테스트를 읽고 어떻게 동작하는지도 예측 가능 선 코딩 후, 몰아서 단위테스트가 아니라 TDD를 해야함 단위테스트를 작성하고, 그것에 맞는 코딩을 작성하는 버릇이 필요 함 Jest Javascript testing FrameWork로 CRA에서 기본적으로 제공하는 test 로서 입지를 다져 대중적으로 쓰이고 있음 facebook의 openSource로 가장 핫한 테스트 도구 Easy Setup, Instant Feedback(고친 파일만 빠르게 테스트 다시..
20210613 React12 : Life Cycle 도표 이해하기, Reconciliation, Render 최적화 하기, react의 같은 component 인식, key Prop, shouldComponentUpdate, PureComponent, 함수를 prop으로 전달시 주의, Function Component render 제어(React... React 12 Life Cycle 도표 React Advanced Optimzing Performance 필요할 때만 render 하여, 최적화 시키는 작업 즉, 불필요한 render를 줄이는 방법 Reconciliation (조정) 대전제 -> 훨씬 효율적으로 Rerender 컨트롤 가능 랜더 전후의 일치 여부를 판단하는 규칙 서로 다른 타입의 두 엘리먼트는 서로 다른 트리를 만들어 낸다. 개발자가 key prop을 통해, 여러 렌더링 사이에서 어떤 자식 엘리먼트가 변경되지 않아야 할지 표시해 줄 수 있다. 서로 다른 타입의 element를 부모로 하는 Component의 차이 (Unmount, Mount) 같은 컴포넌트()를 render 하지만, 상위 타입이 다르기 때문에 두개는 다르다고 인식 ->..
20210610 React09 : 컴포넌트간 통신(상하, 하상), Context API & useContext(데이터 set, 데이터 get 3가지 방식/Cunsumer, Class static, Function useContext) React 09 컴포넌트 간 통신 하위 컴포넌트 변경 하기 예시 상위 컴포넌트에서 하위 컴포넌트에서 쓰이는 state의 값을 변경 하는 경우 A컴포넌트(버튼) -> B컴포넌트 -> C컴포넌트 -> D컴포넌트 -> E컴포넌트(pros.value) A에 있는 버튼을 클릭해서 E컴포넌트에 있는 value를 변경하는 것 상위 컴포넌트의 state 값을 props로 내려서 변경함 import { useState } from "react"; export default function A() { const [value, setValue] = useState("아직 안바뀜"); return ( E의 값을 바꾸기 ); function click() { setValue("E의 값을 변경"); } } function B({..
20210610 React08 : Additional Hooks(useReducer, useMemo, useCallback, useRef), React-router Hooks(useHistory, useParams), Custom Hooks & HOC (useWindowWith, useHasMounted, withHasMounted) React 08 Custom Hooks customHooks : useWindowWidth() 브라우저 창 가로가 변경 되었을 때 변경된 숫자를 받아오는 hook state를 활용해서 재사용 할 수 있는 hook을 만들어 냄 (따로 관리 함) window.innerWidth -> 현재 브라우저의 가로 값을 가져옴 resize event -> resize 함수 실행 (state에 변경된 width값을 지정) -> state 값이 변경되어 return 값이 width를 rerender 함 // useWindowWidth.js import { useEffect, useState } from "react"; export default function useWindowWidth() { const [width, s..
20210609 React07 : HOC (고차 컴포넌트), Controlled vs Uncontrolled Component, Hooks(useState, useEffect) React 07 HOC (Higher-Oder Components) 고차 컴포넌트 Hook이 나오면서 사용성이 줄어들고 있음 컴포넌트를 재사용 할수 있는 기술 React 에서만 있는 기술이 아닌 일종의 패턴 개념임 HOC는 컴포넌트를 인자로 받아 새로운 컴포넌트를 리턴하는 함수 컴포넌트 vs HOC input : props -> 컴포넌트 -> output : UI input : 컴포넌트 -> HOC -> output : 새로운 컴포넌트 사용법 cross-cutting concerns (횡단 관심사)로 사용함 여러 페이지에서 지속적으로 일어 날수 있는 일 (ex. 로그인, 인증, 로깅) 그런 일을 전문적으로 하나로 분리하여 관리하여 여러 페이지에서 사용함 HOC에 인자로 들어가는 컴포넌트를 변경하지 말아야..
20210608 React06 : Styled-Components 패키지, 웹 컴포넌트, Shadow DOM, React-shadow 패키지, Ant Design React 06 Styled Components react, CRA를 통해서가 아닌 별도의 라이브러리를 이용해서 편하게 사용하는 방법 Styled-Components Official Site styled Components : 컴포넌트 자체에 style이 있어 별도의 css, css module 필요 없이 하는 방식 styled components, emotion 등이 있음 설치 : npm i styled-components 기본 사용법 styled-components를 import로 연결하여 styled객체를 가져와서 사용함 ES6에서 제공하는 Tagged Template Literals 기능을 활용함 styled-components : Tagged Template Literals more explai..
20210607 React05 : Style Loders, CSS, SASS, CSS module, SASS module, classNames 라이브러리(객체 key module.css로 만들기), 객체 value 생략표현 React 05 React Component Styling Style Loders Style을 적용하기 위한 파일들이 동작하기 위함 배포용 파일로 변화시키기 위한 설정들로 4가지 방식이 있음 CSS, CSS Module, Sass, Sass Module 위의 4개의 type에 webpack에서 loader를 붙이고 설정하여 사용하게 됨 // webpack.config.js // style files regexes const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; CSS, SASS 기..
20210607 React04 : Routing(path, id, queryString 방식) URLSearchParams, query-string 패키지, Switch-NotFound, JSX링크로 라우팅 이동(RRD : Link, NavLink), JS로 라우팅 이동(RRD: history, withRouter, Redirect) React 04 Dynamic Routing URL을 동적으로 입력하는 방법 Path에 id값 사용 방식 Router에서 Route에 연결한 라우트 Component의 경우 path에 :이름을 붙여서 url을 표현 하게 되면 해당 Component 함수에서 받아오는 인자 (props)의 경우 객체이다. 그 객체는 해당 객체의 match에 params 안에 path로 지정한 이름으로 key를 가지는 key-value의 구조로 가지게 됨 자동으로 params 객체에 이름: '1' 의 item을 가지게 됨 :를 사용하는 경우 필수 요소라서 /profile/:id의 표현인 경우 /profile를 포함한다고 인식하고, 이처럼 따로 라우트 처리를 해줘야 함 // id라는 이름으로 path를 붙인 경우..