전체 글 38

Context API

📌 Context API전역 상태 관리를 간편하게 할 수 있도록 도와주는 리액트의 내장 APIcontext를 이용하면 단계마다 일일이 props를 넘겨주지 않고도 컴포넌트 트리 전체에 데이터 제공 가능Context: 전역 상태를 저장하고 제공.Provider: 상태를 제공하는 컴포넌트.Consumer: 상태를 소비하고 사용할 컴포넌트. 1. Context, 언제 쓸까?전역 상태 관리: 컴포넌트안에서 전역적으로 공유해야 할 데이터가 있을 때 (e.g. 테마 설정, 언어 설정, 로그인 데이터, 사용자 인증 정보 등..) props drilling 방지: 컴포넌트 뎁스가 많으면 props를 여러 레벨로 전달해야한다.(= props drilling) 이 때 context api를 사용하면 중간 컴포넌트를 거치..

React Router - useNavigate()

📌 useNavigate()리액트 라우터의 훅 중 하나로, useNavigate를 사용하면 특정 이벤트가 발생 했을 때 다른 경로로 쉽게 이동할 수 있다.URL 변경을 처리하는 프로세스를 간소화 할 수 있다. useNavigate 사용방법import { useNavigate } from "react-router-dom"const 컴포넌트 명 = ()=>{ const navigate = useNavigate() const move = ()=>{ navigate("/이동할 라우터 명") } return { 이동 }} 1. react-router-dom에서 useNative를 import 해온다2. useNati..

중첩 라우팅 & Outlet

📌 중첩 라우팅 (Nested Routing)중첩 라우팅은 리액트 같은 SPA(Single Page Application)에서 여러 페이지 또는 뷰를 구성할 때 사용.복잡한 UI 구조를 효과적으로 관리할 수 있게 해주고, URL 구조에 맞게 컴포넌트를 계층적으로 배치할 수 있게 해준다.공통된 레이아웃이나 기능을 가진 여러 페이지를 쉽게 구성할 수 있다. (코드의 재사용성 증가)  사실 이렇게 설명으로만 들으면 사실 이해하기 어렵고 와닿지 않는다.중첩 라우팅을 하는 이유와 필요성을 쉽게 알기 위해 예제를 통해  중첩 라우팅 하지 않은 경우를 먼저 살펴보자!     만약 메뉴바를 만들고 각 메뉴를 클릭 했을 때, 메뉴바는 고정되어 있고 클릭 한 페이지의 내용만 보여주고 싶다면?// Menu.tsximpor..

children prop & react 배열 순회(key)

📌 children 이란? children은 props의 일종으로, 컴포넌트 사이에 위치한 모든 JSX 요소를 포함한다. 여러 개의 요소를 받을 수 있다. 컴포넌트에 유연성을 제공하며, 내부에 다른 요소나 텍스트를 포함할 수 있게 해준다.  ⇒  children으로 모든 값을 받아서 표시할 수 있음. 일일이 props에 정의해서 사용하지 않아도 됨! // App.tsximport "./App.css";import UserList from "./components/UserList/UserList";import UserProfile from "./components/UserProfile/UserProfile";import { CommunityUser } from "./models/Communityuser..

[노트내용정리] DOM과 이벤트

📌 DOM(Document Object Model) APIDOM 은 HTML 문서의 내용을 트리형태로 구조화하여 웹페이지와 프로그래밍 언어를 연결시켜주는 역할각각의 요소와 속성, 콘텐츠를 표현하는 단위를 '노드(node)'라고 한다.DOM을 변수에 담을 때는 $를 사용하거나 변수 뒤에 El을 붙여주는 등 엘리먼트를 구분시켜주는 것을 추천함(변수네이밍이 충돌 할 일이 없다!)💡 API는 Application Programming Interface. 쉽게 ‘주문서’라고 기억하기!  1. DOM 트리에 접근document 객체를 통해 HTML 문서에 접근 (셀렉터로 엘리먼트를 가져오는 거,,,)// ⭐해당하는 Id를 가진 요소에 접근하기document.getElementById();// 해당하는 모든 요소..

트러블

게시글 작성 폼에서 카테고리 선택하는 부분을 실제 데이터가 아닌 하드코딩으로 넣어주고 있었다.  실제 post 응답으로 받아오는 카테고리의 ID와 title (카테고리 이름)을 받아와 넣어주고 싶어서 view의 EJS 파일에서태그를 넣어주고 스크립트를 위와 같이 작성해줬다. {"message":"Internal Server Error","details":"C:\\Users\\DAYOUNG\\Desktop\\orm-camp\\node-project\\git-nanum-sup\\src\\views\\client\\posts\\postWrite.ejs:29\n 27| 카테고리 선택\r\n 28| \r\n >> 29| \">\r\n 30| \r\n 31| \r\n 32| \r\n\npost is not defi..

동글동글 2024.09.27

[노트내용정리] 생성자 함수 & Class (feat. 프로토타입, instance, new)

📌 생성자 함수 (constructor function) 객체를 생성하기 위한 함수유사한 객체 여러 개를 쉽게 만들 수 있다.일반함수와 구분하기 위해 'new' 연산자를 사용해 호출하고, 첫 번째 문자를 대문자(파스칼 케이스)로 작성한다.new 연산자- 빈 객체를 생성한다.- 새로 생성된 빈 객체는 생성자의 프로토타입을 상속받는다.- this를 새로 생성된 객체에 바인드 시킨다.- 생성자에 명시적으로 다른 객체를 리턴하지 않는 경우, this로 바인드된 객체가 반환된다. (일반적으로 생성자는 값을 리턴하지 않음)function User(name) { // this = {}; (빈 객체가 암시적으로 만들어짐) // 새로운 프로퍼티를 this에 추가함 this.name = name; this...

[Git 에러] Another git process seems to be running in this repository

fatal: Unable to create 'C:/Users/내 파일경로/현재 작업 폴더/.git/index.lock': File exists.Another git process seems to be running in this repository, e.g.an editor opened by 'git commit'. Please make sure all processesare terminated then try again. If it still fails, a git processmay have crashed in this repository earlier:remove the file manually to continue.  📌 이슈상황요즘 백엔드 수업을 들으면서 노드 작업중에 터미널에서 서버실행, g..

[노트내용정리] this & 콜 어플라이 바인드 (Call, Apply, Bind)

📌 thisthis는 객체를 가리키는 참조 변수. 호출되는 위치에 따라 다르게 this를 정의한다.function a(){ console.log(this) }a(); // windowlet myObj = { val1: 100, func1: function () { console.log(this); }}myObj.func1(); // myObj전역 컨텍스트: this는 전역 객체(브라우저에서는 window)를 가리킨다. 함수의 'this'는 호출시점에 따라 달라진다. 일반함수는 호출 위치에 따라 this를 정의하고, 화살표함수는 자신이 선언된 함수 범위에서 this를 정의한다.const hello = { name: '이름ㅇㅇㅇ', normal..