[Redux] Redux-saga를 알아보자
·
🍞 Front-End/React
Redux-saga란? 공식문서에서는 Redux-saga를 다음과 같이 소개하고 있다. Redux-saga는 react/redux 애플리케이션의 사이드 이펙트, 예를 들면 데이터 fetching이나 브라우저 캐시에 접근하는 순수하지 않은 비동기 동작들을 더 쉽고 보기 좋게 만드는 것을 목적으로 하는 라이브러리이다. redux에서는 action을 발생시키면 reducer를 통해 state를 변경시켜 store를 갱신했다. Redux-saga는 action과 reducer 사이에서 흐름을 제어하는 미들웨어이다. 이 중간에서 Redux-saga는 action이 발생하면 reducer가 액션을 처리하기 위해 다양한 작업을 할 수 있다. 다양한 작업들의 예시는 이렇다. - 기존 요청을 취소 처리하거나 불필요한 중..
[React] 구독하기(팔로워, 팔로우) 기능
·
🍞 Front-End/React
아래와 같이 구독을 안 했을 때와 구독을 했을 때 구현을 해보겠다. ✅ 상태관리 구독자 수와 구독 여부 상태를 만들어준다. const [SubscribeNumber, setSubscribeNumber] = useState(0); const [Subscribed, setSubscribed] = useState(false); ✅ 첫 렌더링 페이지를 처음으로 렌더링 할 때, useEffect를 활용하여 서버에서 구독자 수 정보와 구독 여부 정보를 가져온다. 먼저, 구독자 수 정보를 가져오기 위해선 구독받은 사람 정보를 서버에 보내줘야 한다. 응답이 성공이라면 상태를 업데이트해준다. 다음으로 구독 여부 정보를 가져오기 위해선 구독받은 사람과 구독자, 두 개의 정보를 서버에 보내줘야 한다. 이때 구독자 정보를 꺼..
[React] 비디오 업로드(multipart/form-data) 기능
·
🍞 Front-End/React
아래와 같이 비디오를 업로드 할 수 있는 페이지를 구현할 것이다. ✅ 상태 관리 비디오 업로드를 하려면 비디오 제목과 내용, 프라이빗 여부, 카테고리, 파일 경로, 시간, 썸네일 경로 상태를 생성해준다. const user = useSelector((state) => state.user); // redux state에서 user 가져오기 const [VideoTitle, setVideoTitle] = useState(""); const [Description, setDescription] = useState(""); const [Private, setPrivate] = useState(0); const [Category, setCategory] = useState("Film & Animation"); c..
[React] Expected an assignment or function call and instead saw an expression no-unused-expressions 오류
·
🍞 Front-End/React
✅ 문제 상황 map을 사용하여 배열에 있는 값들을 전부 다 렌더링 하려고 했지만 아래와 같은 오류가 발생했다. Expected an assignment or function call and instead saw an expression no-unused-expressions ✅ 오류 원인 에러의 발생 원인은 map() 메서드를 사용할 때 주의점과 동일하다. .map(() => {}) 메서드를 중괄호와 같이 사용할 때는 {} 중괄호 안에 return이 존재해야 한다. 하지만, 나는 .map() 메서드를 사용했음에도 불구하고 return을 사용하지 않아 오류가 발생했던 것이다. ✅ 해결 방법 1. .map() 메서드에서 {} 중괄호를 사용할 때 return을 사용한다. 2. .map() 메서드를 사용할 때..
[React] TypeError: Cannot read properties of undefined (reading 'image') 오류
·
🍞 Front-End/React
오류 상황 사진을 넣기 위해 서버에서 받아온 이미지 링크를 src에 넣었더니 읽어들일 수가 없다고 한다. 이는 이미지 정보를 가져오기 전에, 먼저 화면이 렌더링 되어 undefined가 뜬다고 생각했다! TypeError: Cannot read properties of undefined (reading 'image') 해결 방법 image가 있다면 렌더링되도록 조건문을 걸어주었다. // 조건문 걸어준 것 if (VideoDetail.writer) { return ( ); } // 사진이 없다면 loading ... else { return ...loading; } 참고) TypeError: Cannot read properties of undefined (reading 'img') React Please..
[React] 로그인, 로그아웃, 회원가입 구현 with Redux
·
🍞 Front-End/React
프로젝트 구조를 살펴보자면 아래와 같다. 기능구현을 우선시하기 위해 css는 최소한으로 했다! 먼저, 기본이 되는 페이지를 살펴보자. ✅ 라우팅 설정 /은 첫 페이지 랜딩페이지로 로그아웃 페이지 /login은 로그인 페이지 /register은 회원가입 페이지 react-router-dom v6으로 라우팅을 설정해 줬다. // App.js import React from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import LandingPage from "./components/views/LandingPage/LandingPage"; import LoginPage from "./components/views/Logi..
[React/Node.js] 프론트 서버와 백 서버 한 번에 키기
·
🍞 Front-End/React
1️⃣ 설치 npm i concurrently --save 2️⃣ 설정 --prefix client를 설정해줘야 client 폴더에 있는 것을 실행해준다. // package.json "scripts": { "start": "node server/index.js", "backend": "nodemon server/index.js", "test": "echo \"Error: no test specified\" && exit 1", // 아래 코드를 추가해주면 된다. "dev": "concurrently \"npm run backend\" \"npm run start --prefix client\"" }, 3️⃣ 실행 npm run dev
[React/Node.js] CORS 이슈, Proxy 설정
·
🍞 Front-End/React
✅ 문제 상황 Access to XMLHttpRequest at 'http://localhost:5000/api/hello' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. ✅ 오류 원인 서버는 포트가 5000이고 클라이언트는 포트가 3000이기 때문에 발생하는 오류이다. 이렇게 두 개의 다른 포트를 가지고 있는 서버는 아무 설정 없이 Request를 보낼 수 없다. CORS(Cross-Origin Resource Sharing) 정책 때문에 보안을 위해서 막아버린다. ✅ 해결 방법 여러가지 ..
[React/TS] 자주겪는 문제 해결방법
·
🍞 Front-End/TypeScript
1. TS2322: typescript에서 useRef를 사용할 때 Type 'MutableRefObject' is not assignable to type 'string | ((instance: HTMLInputElement | null) => void) | RefObject | null | undefined'. Type 'MutableRefObject' is not assignable to type 'RefObject'. Types of property 'current' are incompatible. Type 'HTMLInputElement | undefined' is not assignable to type 'HTMLInputElement | null'. Type 'undefined' is not..
[TS] 타입스크립트란? (TypeScript)
·
🍞 Front-End/TypeScript
타입스크립트란? - 자바스크립트에 타입을 추가해서 확장시킨 것이다. - 자바스크립트를 이해함으로써 코드를 실행하기 전 에러를 잡거나 고치는 데 시간을 절약해준다. - 어떤 브라우저나 어떤 운영체제 어떤 실행환경이든 가능하며 완전히 오픈소스다. 타입스크립트는 "Compiled Language" 자바스크립트는 "Interpreted Language" 타입스크립트는 컴파일 타임에서 미리 에러를 찾아 고칠 수 있기 때문에 편리하다. 타입스크립트에서 바로 해석해서 실행시켜주는 자바스크립트로 컴파일러가 변경해준다! ✅ 자바스크립트 Type vs 타입스크립트 Type 자바스크립트는 Dynamic (Types resolved at runtime) 개발할 땐 알 수 없고 런타임에 도달해야만 잘못되었는지 알 수 있다! 타..