1. Orphan Removal 사용
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Feedback> feedbacks = new ArrayList<>();

public void removeFeedback(Feedback feedback) {
		feedbacks.remove(feedback);
}
  1. https://velog.io/@jcw1031/JPA-Hibernate-schema-validation-오류

  2. tailwind css에서 동적 css를 먹이려니까 안됨

    1. priceColor state값에 따라 css를 다르게 주고 싶어서 className에 템플릿 리터럴로 줌
    
    useEffect(() => {
        if (Number(gap) < 0) {
          setPriceColor("primary-4");
        } else {
          setPriceColor("primary-3");
        }
      }, [gap]);
      
    <div className={`flex flex-row text-xs text-${priceColor} ml-3 items-end `}>{gap}원</div>
    

    b. 개발자 도구에는 원하는대로 들어갔는데 안돼서 빌드 후 css 파일 확인 → text-primary-3이 정의되지 않았음. 문제 인식

    c. tailwind-merge로 해결.

    <div  className={`flex flex-row text-xs ml-3 items-end ${priceColor === "primary-3" ? "text-primary-3" : "text-primary-4"}`}>{gap}원</div>
    
  3. 운영체제에 따른 spring jpa orm 연결시 mysql 대소문자 오류

  4. 맥-크롬 에서 onkeydown 인식 오류

    1. 맥 -사파리 / 윈도우 -크롬에서는 오류 없었는데 검색어 입력시 마지막 글자만 인식되는 문제

    [React] onKeyDown 사용으로 인한 오류

https://always-hyeppy.tistory.com/entry/onKeyDown-이벤트-중복으로-2번-실행되는-현상과-해결방법feat-React#google_vignette

  1. onkeydown은 키가 눌린 시점을 인식하는데,

검색창에서 엔터키 눌러 검색 하려고 함

  1. 처음에 onkeydown 이벤트를 사용해 e.key로 엔터 입력을 인식함
  2. 영어 검색어는 잘 작동하지만 한글 검색어는 오류가 뜸.
    1. ‘삼성’ 검색시 ‘성’이 검색됨

    2. 영어와 달리 조합문자인 한글은 입력창에서 isComposing 상태를 가짐

      → isComposing은 현재 값이 입력이 완료된 상태인지 아닌지를 나타내주는 속성이다.

      → isComposing이 true면 입력 중이라는 의미, false면 입력이 완료되었다는 의미!

      → ‘삼성’ 입력후 엔터 눌러도 입력창에서는 여전히 isComposing=true 상태

      (윈도우에서는 isComposing=false로 잘 인식하지만, 맥에서는 인식 오류)

      1. IME(Input Method Editor)는 영어가 아닌 한글, 일본어, 중국어와 같은 언어를 다양한 브라우저에서 지원하도록 언어를 변환시켜주기 위한 OS 단계의 어플리케이션
      2. 그러나 IME 과정에서 keydown 이벤트가 발생했을때 isComposing상태면 이벤트를

해결방법

  1. e.nativeEvent.isComposing === false를 추가해 조합이 완료된 상태에만 함수 호출하도록

      const handleSearchKeyDown = (e) => {
        if (
          e.key === "Enter" &&
          searchQuery.trim() &&
          e.nativeEvent.isComposing === false
        ) {
          const currentPath = `/search?query=${encodeURIComponent(
            searchQuery.trim()
          )}`;
          navigate(currentPath);
          setSearchQuery("");
        }
      };
    
    
  2. onkedown 대신 onkeyup 사용

스크린샷 2024-12-04 오후 4.13.07.png