diff --git a/.eslintrc.json b/.eslintrc.json index a42c0ea..ea1493c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -18,7 +18,7 @@ "rules": { "react/react-in-jsx-scope": "off", "@typescript-eslint/no-unused-vars": "off", - "no-unused-vars": "off", - "prettier/prettier": "warn" + "prettier/prettier": "warn", + "no-unused-vars": "off" } } diff --git a/.gitignore b/.gitignore index a547bf3..3b0b403 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +.env \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 2fd1103..91db5df 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,4 +5,4 @@ "printWidth": 100, "tabWidth": 2, "arrowParens": "avoid" -} \ No newline at end of file +} diff --git a/README.md b/README.md index 233d301..ba703f9 100644 --- a/README.md +++ b/README.md @@ -1,237 +1,655 @@ -# Vite Typescript 프로젝트 세팅 +# Redux -## 프로젝트 생성 +- https://redux-toolkit.js.org/ +- https://ko.redux.js.org +- Context API 와 같은 역할을 함. +- 여러 컴포넌트들이 값(state)를 공유해서 활용한다. +- `Redux` 와 `Redux Toolkit` 이 있다. +- Redux 가 복잡해서 나온 최신 버전이 `Redux Toolkit` + +## 1. 설치 + +- https://redux-toolkit.js.org/introduction/getting-started ```bash -npm create vite@latest . -> React 선택 -> TypeScript 선택 +npm install @reduxjs/toolkit ``` -## npm 설치 - ```bash -npm i -npm run dev +npm install react-redux ``` -## React 18 마이그레이션 +## 2. Props 예제 -### 1. React 18 타입스크립트 +- `State Props Drilling` 을 개발자가 관리해야 함. +- `Drilling` 은 `3 단계 이상 넘어가면 관리`가 어렵습니다. +- App.tsx 대상 코드 진행중 -```bash -npm i react@^18.3.1 react-dom@^18.3.1 -npm i -D @types/react@^18.3.5 @types/react-dom@^18.3.0 -``` +```tsx +import { useState } from 'react'; +// css 객체 +const container_root: React.CSSProperties = { + display: 'flex', + flexDirection: 'column', + border: '5px solid black', + padding: 10, + gap: 10, +}; +const container: React.CSSProperties = { + border: '5px solid red', + display: 'flex', + gap: '10px', +}; +const container_title: React.CSSProperties = { + fontSize: '40px', + color: 'blue', + border: '5px solid orange', +}; +const container_div: React.CSSProperties = { + border: '5px solid hotpink', + margin: 10, +}; +const container_div_2: React.CSSProperties = { + border: '5px solid yellowgreen', + margin: 10, +}; +const btn: React.CSSProperties = { + border: '5px solid #000', + padding: 10, + margin: 20, +}; +export default function App() { + // 만약 props 로 useState 값을 넘겨준다면? + const [num, setNum] = useState(0); + const onIncrease = () => { + setNum(num + 1); + }; + + return ( +
오류 : {error}
+ +아직 채팅방이 없습니다.
+새 채팅 버튼을 눌러 대화를 시작하세요!
+오류 : {error}
+ +아직 메시지가 없습니다.
+첫 번째 메시지를 보내세요!
+오류 : {error}
+ +아직 채팅방이 개설되지 않았습니다.
+새 채팅 버튼을 눌러 대화를 시작하세요!
+장바구니가 비었습니다.
+ ) : ( +장바구니에 담긴 제품을 구매하면 여기서 빠져요!
+관리자만이 이 페이지에 접근할 수 있습니다.
++ 현재 로그인 된 계정 : {user?.email} +
+계정 삭제 요청 관리
++ 대기 중인 삭제 요청이 없습니다. +
++ {countDown}초 후 todos 페이지로 이동합니다... +
++ {user ? `${user.email}님, 환영합니다.` : 'Todo 서비스에 오신 것을 환영합니다.'} +
++ ✒️ 효율적으로 할 일을 관리하고 생산성을 높여보세요. +
++ ✍️ 계정을 만들고 할 일 관리를 시작해보세요. +
++ 할 일을 추가, 수정, 삭제하고 완료 상태를 관리할 수 있습니다. +
++ 많은 할 일을 효율적으로 탐색할 수 있는 무한 스크롤 기능을 제공합니다. +
++ 개인 정보와 아바타를 관리하고 계정을 안전하게 관리할 수 있습니다. +
+개인 정보를 확인하고 수정하세요.
++ 새로운 이미지 미리보기 +
++ 이미지가 제거되었습니다 +
++ 현재 아바타 +
++ 아바타 이미지를 설정해보세요 +
++ 지원 형식 : JPEG, PNG, GIF (최대 5MB) +
+계정에 로그인하시오.
++ {msg} +
+ )} +새 계정을 만들어 보세요.
++ {msg} +
+ )} +{profile.nickname}님의 할 일
} +{profile.nickname}님의 할 일
} +{profile.nickname}님의 Todo 관리
} +{profile.nickname}님의 새로운 할 일
} +스크롤하여 더 많은 할일을 확인하세요
+{profile.nickname}님의 Todo 관리
} +좌측에서 채팅방을 선택하거나
+새 채팅 버튼을 눌러 대화를 시작하세요.
+ + {/* 기능 안내 정보 */} +💬 실시간 1:1 메시지
+👥 사용자 검색 및 초대
+📱 반응형 디자인
+