✔ 컴포넌트는 별도의 파일로 분리하는 것이 좋다 ✔ 다수의 컴포넌트가 한 파일에 저장된느 것은 아주 드문 이례적인 일이다. --> 이렇게 컴포넌트를 저장할 하위 폴더를 만들자 ~~ --> children prop !! props.children
✔ 커스텀 컴포넌트는 실제로 렌더링된 DOM에 나타나지 않는다 ✔ 이것이 바로 커스텀 컴포넌트를 대문자로 시작하는 이유. Header(커스텀 컴포넌트)와 header(내장요소) ✔ 중괄호를 잘 봐 중괄호 사이에 원하는 걸 넣을 수 있음 불변동 내용과 동적 값을 혼합하는 문법임! ✍ props 속성 사용하기 // Important:// For this project to work on CodeSandbox, image assets ("assets") folder// must be stored in the public folder (as it's the case by default in this project)// 이미지 불러오기// 이 이미지는 결국 자바스크립트 객체라고 할 수 있다. 정확히 말하면 ..
✍ 컴포넌트 함수로 사용되기 위해서는? 1. 대문자로 시작되어야 한다. (App O, app x) 2. 함수에서 렌더링 가능한 값이 반환 되어야 한다. 결론! 평범한 자바스크립트 함수를 만든 후 대문자로 시작하는 적합한 이름을 부여하면 JSX 코드가 반환 된다! 🔍 강의랑 리액트 버전이 달라져서 GPT한테 물어봄 리액트에서는 index.html 파일이 앱의 진입점이지만, 실제로 App.js를 불러와서 렌더링하는 작업은 JavaScript 코드에서 이루어진다. HTML 파일만 보면 App.js를 직접 불러오는 코드가 없는 것처럼 보이지만, 실제로는 React의 엔트리 포인트 파일 (보통 index.js 또는 main.js) 에서 App.js를 불러와 렌더링하고 있다.✨ 리액트 앱이 렌더링되는 과정i..
✔ leading: 아이콘 버튼이나 간단한 위젯을 왼쪽에 배치할 때✔ actions: 복수의 아이콘 버튼 등을 오른쪽에 배치할 때✔ onPressed: 함수의 형태로 일반 버튼이나 아이콘 버튼을 터치했을 때 일어나는 이벤트를 정의하는 곳
✔ ??= --> null이 아닐때는 오른쪽 값으로 바꿔라 ✔ Listimport 'package:flutter_study/flutter_study.dart' as flutter_study;void main() { // list List fruit = ['토마토', '사과']; print(fruit); // index print(fruit[0]); fruit.add('수박'); print(fruit);} ✔ Map key와 value 값 ✔ Set중복값 제거 ✔ if문 ✔ swith case ✔ loop ✔ 함수 parameter positional parameter optional parameter named parameter arrow function ✔ typedef op..
public void save(FoodDto foodDto){ Food food = new Food(); food.setFoodId(id); food.setFoodName(foodDto.getFoodName()); food.setFoodPrice(foodDto.getFoodPrice()); food.setFoodOption(foodDto.getFoodOption()); food.setFoodRegister(foodDto.getFoodRegister()); db.put(id++, food); } 흠... 내가 찾아보기로 Entity 계층에서는 setter 사용을 지양한다고 한다. (물론 사용이 불가능 한 건 아니지만) 엔티티는 디비와 직결되는 부분이라 변경이 쉽지 않아야 하기 때문이다. 그런데 dto로 변..
✍ DDD 설계란? Domain Driven Design 이름에서 부터 알 수 있듯이 도메인 위주의 설계를 뜻한다. 그럼 도메인은 무엇인가? 스진초에서는 배달 어플 API 프로젝트를 진행한다. 이를 예로 들어서 말하자면 배달어플을 만들기 위해 서 어떤 기능(혹은 동작)이 필요한지를 생각해보면 된다. 자, 가장 기본적으로 음식, 주문, 회원, 결제, 진행상황 등이 필요하다. 앞서 말한 음식, 주문과 같은 것들이 하나의 도메인이 될 수 있다. 바로 도메인, 이 덩어리들 위주로 설계를 하는 것이다. 좀 더 세세하게 설명해보자면 음식 이라는 덩어리 안에는 음식의 가격, 음식의 이름, 음식의 옵션(EX. 맛) 이 있을 수 있고, 가게 주인 입장에서는 음식을 등록하고, 수정하고, 삭제할 수 있는 기능이 들어갈 수 ..
✍ Entity Entity는 실제 DB 테이블과 1:1로 매핑되는 클래스 그렇기 때문에 실제 DB에 존재하는 컬럼만을 속성으로 가져야 하며(완벽히 동일해야 한다는 말) 상속받을 수도 없다. ✍ DTO(Data Transfer Object) 말 그대로 데이터를 전송하는 객체이다. ✍ VO (Value Object) 변하지 않는 데이터 객체. 객체의 불변성을 보장하기 때문에 수정할 수 없다. 단순히 값을 불러올 때 주로 사용한다. 이 3가지는 각자의 개념을 설명하기 보다 서로 어떤 기능을 가지고, 어떻게 다른지 비교하는 게 더 이해하기 쉽다. 엔티티와 DTO는 무엇이 다르냐? 엔티티는 DB와 직접 연결되어 있기 때문에 엔티티가 변경되면 DB의 내용도 변경된다. 반면 DTO는 View와 연결되어 있다. 그래..
✍ HTTP Method란? 클라이언트와 서브 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식이다. 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행하야 할 동작을 지정하여 요청을 보내는 방법이다. ✍ 종류 GET POST PUT PATCH DELETE HEAD OPTIONS CONNECT TRACE 💻 GET 조회하는 메서드. GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다. 즉, 데이터를 변경하는 연산에 사용하지 않는다. 조회할 데이터는 URL로 파라미터를 받는다. 💻 POST 리소스를 생성(또는 등록?)하는데 사용하는 메서드. GET과 다르게 URL이 아니라 Body로 데이터를 받는다. 💻 PUT 수정하는 메서드. URL로 어떤 데이터를 수정할 지 파라미..
✍ Service와 Repository 패키지 생성 ✍ Repository 클래스 생성 -> 서비스와 레포지토리를 생성할 것 이므로 컨트롤러가 아닌 레포지토리에 "TEST" 문자열을 반환해준다. 레포지토리 클래스에 어노테이션을 달아 아~ 앞으로 이 클래스는 DB에 접근 가능한 코드를 작성하는 곳이구나 하고 등록해준다. 이 부분을 구글링 해보면 레포지토리 어노테이션을 달아주면 루트 컨테이너의 BEAN 객체로 등록된다고 한다. (근데 사실 구조를 잘 모르겠다. 여태까지 스프링 원리를 제대로 모르고 아 이건 서비스, 아 이건 컨트롤러 이렇게만 알고 사용했기 때문에 아직 잘 모르겠다.. 과제를 보고 아 어떻게 코드를 짜야겠다 단순히 생각만 들었다. 구글링을 해서 글을 읽어도... 내용이 확 와닿지 않는다) @C..