📌 채팅 구현시 구글 로그인된 정보값을 가져오지 못하는 문제 [구글 로그인시] 채팅 프로필에 구글 로그인시에는 그냥 디폴트이미지만 불러오는 이슈가 발생했다. 🥹 [이메일로 회원가입시] 이메일로 회원가입시에는 마이페이지에서 변경한 이미지가 실시간으로 잘 들어오지만 구글 로그인은 정보값을 가져오지 못했다. 🧐 해결 과정 알고 보니 구글 로그인한 정보값은 파이어베이스의 users collection에 들어가지 않아서 생긴 이슈였다. [ handleGoogleSignIn.tsx ] import classNames from 'classnames'; import { auth } from '@/firebase/auth'; import { db } from '@/firebase/firestore'; import cla..
프로필이미지가 다 똑같이 나오는 이슈가 발생..! 이를 해결하기 위해서 다음과 같이 해결하였습니다. [ Firebase를 사용하여 채팅 메시지를 표시하는 컴포넌트 ] import { useState, useEffect } from 'react'; import { useRecoilValue } from 'recoil'; import classNames from 'classnames'; import classes from './Message.module.scss'; import { authImagState } from '@/@recoil/authImgState'; import defaultAvatar from '/public/assets/defaultAvatars.svg'; import { collectio..
🧐 Redux의 3원칙 1. Single source of truth (진실은 하나의 근원으로부터) 애플리케이션의 모든 상태는 하나의 저장소 안에 하나의 객체 트리 구조로 저장됩니다. 애플리케이션의 모든 상태는 하나의 store에 저장되며, 이 store는 읽기 전용입니다. 즉, 애플리케이션의 상태를 변경하려면 반드시 action을 dispatch하여 store에서 처리해야 합니다. 이렇게 함으로써, 애플리케이션 전체에서 일관된 상태를 유지할 수 있습니다. 2. State is read-only (상태는 읽기 전용) 상태를 변화시키는 유일한 방법은 무슨 일이 벌어지는 지를 묘사하는 액션 객체를 전달하는 방법뿐입니다. Redux에서는 상태(state)가 읽기 전용(read-only)이어야 합니다. 이는 R..
⭐️ 객체나 배열의 각 요소를 처리하는 유틸리티 함수객체 또는 배열에서 각 요소를 반복적으로 처리하는 each 함수를 제공하며, 유효하지 않은 인자가 전달되었을 경우 예외를 발생시키는 재사용 가능한 함수import { throwTypeError } from "./throwError.js"; import { isArray, isObject, isFunction } from "./typeOf.js"; /** * * @param {Array | Object} arrayOrObject 순환할 객체(배열 또는 객체) * @param {Function} callback 반복 순환 처리할 함수 * @returns {Array} 집합 객체 반환 */ export function each(arrayOrObject, ca..