야놀자부트캠프 15

리덕스(Redux)

리덕스란? 자바스크립트 어플리케이션을 위한 상태 관리 라이브러리 리덕스 Data Flow Action: 간단한 JS 객체. 작업 유형을 지정하는 type 속성이 있으며 선택적으로 redux 저장소에 일부 데이터를 보내는 데 사용되는 payload 속성도 가질 수 있음 Reducer: 어플리케이션 상태 변경 사항을 결정하고 업데이트된 상태를 반환하는 함수. 인수로 조치를 취하고 store 내부 상태 업데이트함 Redux store: 이들을 하나로 모으는 객체 저장소는 어플의 전체 상태 트리를 보유. 내부 상태를 변경하는 유일한 방법은 해당 상태에 대한 Action을 전달하는 것. Redux store는 클래스가 아님. 몇 가지 메소드가 있는 객체일 뿐 Dispatch: 스토어 내장 함수 중 하나로 리듀서에..

리액트 Context

리액트에서 한 컴포넌트 안에서 데이터를 생성하거나 업데이트하거나 다른 컴포넌트와 데이터를 공유해서 사용하는 방법에는 여러가지가 있음 React Context란? Context는 모든 수준에서 수동으로 props를 전달하지 않고도 구성 요소 트리를 통해 데이터를 전달할 수 있는 방법을 제공 React Context는 컴포넌트 트리의 깊이에 관계없이 props를 전달하지 않고도 컴포넌트에 데이터를 제공 Context는 전역 데이터를 관리하는 데 사용 ex) 전역 상태, 테마, 서비스, 사용자 설정 등 Context API란? 전역 데이터를 Context에 담아서 사용하려면 먼저 Context를 생성해야 함 const MyContext = React.createContext(defaultValue); Cont..

리액트 기초(2)

이번에는 리액트를 사용해 디지니플러스 웹사이트를 만들 예정이다. 만들기 전에 필요한 기초 부분을 살펴보자. The Movie DB API 요청을 위한 Axios 인스턴스 생성 및 요청 보내기 Axios란? 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리 Axios 사용방법 axios 모듈 설치: npm install axios --save Axios 인스턴스화 하는 이유 중복된 부분을 계속 입력하지 않아도 되기 때문에 cf) js파일에 'racfe' 치면 functional한 컴포넌트 바로 생성! Styled Component란? CSS-in-JS라고 하는 JS 파일 안에서 CSS를 처리할 수 있게 해주는 대표적인 라이브러리 설치 방법 1. npm - n..

리액트 기초

전개연산자란? 특정 객체 또는 배열의 값을 다른 객체, 배열로 복제하거나 옮길 때 사용 배열 조합 const arr1 = [1,2,3]; const arr2 = [4,5,6]; const arr3 = [7,8,9]; const arrWrap = [...arr1, ...arr2, ...arr3]; 객체 조합 const obj1 = { a: 'A'; b: 'B'; } const obj2 = { c: 'C'; d: 'D'; } // 객체 자체가 들어감 const objWrap = {obj1, obj2}; // 객체 자체가 아닌 각각의 값 할당 const objWrap2 = {...obj1, ...obj2}; 전개연산자를 사용하면 기존 배열을 보존할 수 있음 const arr1 = [1,2,3]; const a..

두 번째 과제 - JS를 이용한 사진 관리 웹사이트 만들기

이번 과제로는 JS를 이용한 사진 관리 웹사이트를 만들어보았다. 먼저 기본 화면을 봐보도록 하자. 로그인 화면 관리 시스템 화면 학생 정보 등록 화면 정보 입력 화면 정보 등록 완료 시 화면 학생 프로필 및 수정 화면 학생 정보 수정 화면 수정된 학생 정보 화면 선택 박스 체크 화면 선택한 객체 삭제 화면 학생 정보 부분 리스트(스크롤) 페이지 CSS를 이용한 애니매이션 화면 반응형 화면 [흐름] 다음과 같이 구성했다. 과제 기간은 약 10일로 지난 과제 기간보다 길었지만 생각없이 신청한 공모전, 교내 경진대회 등으로 시간을 다 날려먹어서 과제 할 시간이 약 4일정도밖에 없어서 요구한 필수 기능들만 구현을 했다. 파이어베이스의 파이어스토어 데이터베이스를 사용했고 웹페이지에서 등록하면 해당 객체 정보가 파..

첫 번째 과제 - HTML/CSS를 이용한 웹사이트 메인페이지 클론코딩

첫 번째 과제로 'HTML/CSS를 이용한 웹사이트 메인페이지 클론코딩'을 진행했다. JS 사용은 권장이었고 필수사항은 HTML과 CSS를 이용해서 메인페이지를 만드는 것이었다. 나는 당근마켓 웹사이트를 만들었고 그 과정에서 알게 된 사실과 어려웠던 점을 적어보려 한다. 내가 만든 웹사이트는 https://aquamarine-mousse-e4a8fd.netlify.app/ 이 주소에서 확인할 수 있다. 나는 수업에서 배운대로 우선 header, main, footer로 영역을 나눠서 개발을 진행했다. header 부분부터 살펴보자. 당근마켓 메인페이지의 헤더는 다음과 같이 구현되어있다. 왼쪽 섹션에는 로고가, 가운데 섹션에는 리스트들이, 오른쪽 섹션에는 서치바와 채팅버튼이 있다. 따라서 나는 header..

JavaScript 마스터 - Ch06 표준 내장 객체

6장에서는 표준 내장 객체에 대해 배웠다. Ch06 표준 내장 객체 문자 - .includes() 대상 문자에 주어진 문자가 포함되어있는지 확인 소괄호 안에 콤마(,)로 구분해 뒤에 숫자를 넣어주면 해당하는 인덱스부터 검사 console.log(str.includes('Hello')) // true console.log(str.includes('hello')) // false - 대소문자 구별 // 0번째 지점부터 주어진 문자가 들어있는지 판단 console.log(str.includes('Hello', 0)) // true console.log(str.includes('Hello', 1)) // false(e부터 검사하므로) 문자 - .indexOf() 대상 문자에서 주어진 문자와 일치하는 첫 번째 인..

JavaScript 마스터 - Ch05 클래스

5장에서는 클래스 개념에 대해 배웠다. 정리를 시작해보자 Ch05 - 클래스 prototype 배열 리터럴: 기호를 통해 생성 const fruits = ["apple", "banana", "cherry"] 기호를 사용한 리터럴 방식: [](배열데이터), {}(객체데이터), ''(문자데이터) new 키워드로 실행하는 함수: 생성자 함수 - 인스턴스 length, includes - prototype 메소드(속성) const fruits = new Array("apple", "banana", "cherry") console.log(fruits) console.log(fruits.length) console.log(fruits.includes("banana")) // true console.log(fruit..

JavaScript 마스터 - Ch04 함수

Ch04에서는 JS 함수에 대해 배웠다. JS를 4년전에 잠깐 배우고 손을 놨어서 좀 꼼꼼히 공부하는 중인데 함수 파트도 열심히 복습할 예정이다. Ch04 - 함수 함수를 선언하는 방법 함수를 선언하는 방법으로는 함수 선언문과 함수 표현식이 있다. // 함수 선언문 function hello() { } // 함수 표현식 const hello = function () { } 함수 선언문의 경우 선언이 호출보다 아래 적혀있어도 에러 없이 잘 동작함 이를 '호이스팅'이라 함(함수 표현식에서는 불가능!) hello2() function hello2() { console.log("hi!") } 반환 및 종료 return 키워드는 데이터 반환 뿐 아니라 함수 동작 멈충 기능 제공(return 다음에 코드써도 동작 ..

JavaScript 마스터 - Ch03 연산자와 구문

2주차 온라인 강의에서는 JS 연산자와 구문, 함수, 표준 내장 객체에 대해 배웠다. Ch03 - 연산자와 구문 할당, 증감연산자 // 할당(Assignment) // const: 재할당 x, let: 재할당 o // const a4 = 3 // a4 = a + 2 let a4 = 3 a4 += 2 console.log(a4) // 증감연산자(Increment * Decrement) let a5 = 3 let a6 = 6 let a7 = 9 console.log(a5++) // 3 console.log(a5) // 4 console.log(++a6) // 7 console.log(a6) // 7 console.log(--a7) // 8 a7 -= 1 console.log(a7) // 7 비교 연산자 co..