묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 기본편
수업외 질문 intellij
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용]프로젝트를 실행하다가 발생한 문제인데 main 클래스 외의 클래스들이 실행이 안되서요현재 current file 밑에 edit configurations에서 다른 클래스들이 밑에 2번째 사진처럼 들어오지 않습니다.run도 안되고 단축키(window) ctrl+shift+F10도 안됩니다.. 어떻게 해야될지 잘 모르겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 다운받은뒤 오류가 나와 혼자 수정해 보았습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인프런 질문 게시판에는 스프링부트 3.0 이상을써라 3.0 이상이면 jdk 17 이상 써야된다 하셔서 3.0 이상으로 다운도 받았고 버전도 21로 사용하고 있는데, A problem occurred configuring root project 'hello-spring'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.2.1.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.2.1> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.2.1 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.1 declares a component for use during runtime, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.2.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.2.1 declares a library for use during runtime, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component, compatible with Java 17 and the consumer needed a component, compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.1 declares a library for use during runtime, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component, compatible with Java 17 and the consumer needed a component, compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.1 declares a component for use during runtime, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.이런 오류가 나와서build.gradle 에서플러그인을 id 'org.springframework.boot' version '2.6.3'로 바꿨고dependencies 에implementation 'org.springframework.boot:spring-boot-starter'를 추가하였더니 오류는 안나더군요이렇게 해결하는게 맞는건가요?그럼 스프링부트 버전이 3.0 이상이 아닌 2.6.3버전을 사용하게 되는건데 괜찮은건가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
딕셔너리와 튜플
딕셔너리의 원래 형태는 리스트안에 튜플이 들어있는 구조라고 말씀하셨는데 그러면 딕셔너리의 Value를 수정하게 되면 튜플도 수정하게 되는것 으로 생각이 들어서요 이 부분이 이해가 잘 안됩니다 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA @Transactional
[질문 내용]JPA 기술을 사용할 때 리포지토리 계층에 @Transactional을 붙여줘야 한다고 말씀해주셨는데 MemberRepository 코드에서는 JPA를 사용하는데 왜 @Repository만 붙여주는 건가요??
-
해결됨[R을 R려줘] R 기초다지기
Section 0 <원소>
안녕하세요? 슬라이드 맨 처음 체크하는 출력값 문제 중에서 3L가 있는데 강의에서 건너뛰신 것 같습니다ㅠ3L는 출력해보니 그냥 3이 나오는데 3L는 무엇을 의미하나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[최대 길이 연속부분수열] 틀린 이유
import java.util.*; class Main { public int solution(int n, int m, int[] arr) { int lt = 0, sum = 0, max = 0, count = 0; for(int rt = 0; rt < n; rt++) { if(arr[rt] == 1) { sum += arr[rt]; } else if (arr[rt] == 0) { if(count++ < m) { sum += 1; } else { if (sum >= max) { max = sum; sum = 0; lt ++; rt = lt; count = 0; } } } } return max; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = in.nextInt(); } System.out.print(T.solution(n, m, arr)); } }논리적으로 틀린건 없는거 같고, 예시코드도 틀린게 없는데 왜 오답이 나오는지 모르겠습니다 !!
-
미해결[웹 개발 풀스택 코스] 부트스트랩 기초
커리큘럼 질문드려요.
자바, 스프링부트 백엔드 과정을 수강했는데요.node.js까지 꼭 해야하나요?지금 생각하는건 부트랑 vue.js 연결해서 SPA 만들고 싶은데.그럼 저같은 백엔드 과정 준비했던 수강생은 별도로 node.js까진 수강하지 않아도 되는건가요?당근마켓 기반 데이터베이스 강의까지 로드맵 따라가면 될까요?자바스크립트 책이 읽어보고 좋아서 프론트쪽은 선생님한테 배워보려고 하는데커리큘럼좀 설명부탁드려요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Hello 클래스 접근제한자
해당 부분 메세지 관련하여 알아본 내용으로는, Hello 클래스를 선언할 때 접근제한자가 생략되어 private으로 취급되는데 helloApi 메소드는 public이어서 private 클래스가 외부로 노출되어 뜨는 경고라고 합니다. 이 내용이 맞는 것인지, 맞다면 해당 방식의 작성법은 문제점이 있을 수 있는 방식인지 답변 부탁드립니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
no such key
{ "errorType": "NoSuchKey", "errorMessage": "The specified key does not exist.", "name": "NoSuchKey", "$fault": "client", "$metadata": { "httpStatusCode": 404, "requestId": "YMG06ZYH60K2201P", "extendedRequestId": "3P/v2TuxF22TpEWbU9iXPei37RoBJHIeVTI/mSC9NV7bY2r4BnC2iyJpCcJnmD3gUEaa9WdsNCw=", "attempts": 1, "totalRetryDelay": 0 }, "Code": "NoSuchKey", "Key": "original/1703707251649_studying+economics+student+aesthetic+bib+uni+college+statistics+math+macbook+apple+ipad+pro+jgu+mainz.jpeg", "RequestId": "YMG06ZYH60K2201P", "HostId": "3P/v2TuxF22TpEWbU9iXPei37RoBJHIeVTI/mSC9NV7bY2r4BnC2iyJpCcJnmD3gUEaa9WdsNCw=", "message": "The specified key does not exist.", "stack": [ "NoSuchKey: The specified key does not exist.", " at de_NoSuchKeyRes (/var/task/node_modules/@aws-sdk/client-s3/dist-cjs/protocols/Aws_restXml.js:5196:23)", " at de_GetObjectCommandError (/var/task/node_modules/@aws-sdk/client-s3/dist-cjs/protocols/Aws_restXml.js:3440:25)", " at process.processTicksAndRejections (node:internal/process/task_queues:95:5)", " at async /var/task/node_modules/@smithy/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24", " at async /var/task/node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthMiddleware.js:30:20", " at async /var/task/node_modules/@smithy/middleware-retry/dist-cjs/retryMiddleware.js:31:46", " at async /var/task/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/flexibleChecksumsMiddleware.js:63:20", " at async /var/task/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/region-redirect-endpoint-middleware.js:14:24", " at async /var/task/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/region-redirect-middleware.js:9:20", " at async /var/task/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:7:26" ] }이렇게 NoSuckKey라고 뜨는데 이건 혹시 s3 access key가 틀렸다는 소리인가요?
-
미해결Spring Boot JWT Tutorial
postman에서 오류가 납니다..
이전까지는 모든게 다 되는데 postman test에 전역 변수를 잡고 Authorization에 {{jwt_tutorial_token}}을 넣어서 send 해봐도 Something went wrong while running your scripts. Check Postman Console for more info 라는 작은 팝업창만 뜰 뿐, 아무런 반응이 없습니다...모든 코드와 postman에도 모두 동일하게 작성을 했는데, 왜 이런 오류가 발생하는지 알 수 있을까요..?ㅜㅜ
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
리덕스 툴킷에서 extraReducers에 HYDRATE설정 방법이 궁금합니다.
툴킷으로 작업을 해보려고 하고 있는데 faker를 써보려다가 제로초님 깃허브에 HYDRATE에 관련된 사항이 있어서 작업을 하려고 하고 잇엇는데 제로초님처럼 똑같이 타이핑을 햇는데 에러가 납니다.const postReducer = createSlice({ name: "postReducer", initialState, reducers: {}, // 청크를 쓸때 필요함 extraReducers: (builder) => builder // 클라이언트 상태를 초기화하는 역할 .addCase(HYDRATE, (state, action) => ({ ...state, ...action.payload.data, })), }); 여기서 에러가 나는 부분은...action.payload.data, 중 payload부분이고 에러 사항은 다음과 같이 나옵니다. 'Action<"__NEXT_REDUX_WRAPPER_HYDRATE__">' 형식에 'payload' 속성이 없습니다.next-redux-wrapper 의 버전은 아래와 같습니다. 혹시 "next-redux-wrapper": "^8.1.0",혹시 next-redux-wrapper로 리덕스 툴킷에 HYDRATE를 하는 방법이 달라진걸까요....
-
해결됨[손에 익는 Next.js] Part 1 - 공식 문서 훑어보기
nextjs의 14버전에서 data fetch
fetch가 next.js에서는 확장된 버전을 제공한다고 했는데어디가 어떻게 확장되었는지가 궁금합니다!그리고 13버전 이전에는 fetch에서 캐싱이 되지 않았던 것일까요?차별화된 이점인지 궁금합니다!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
매서드에서 void가 쓰이는 경우
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 메서드에서 반환타입이 없어서 void를 쓰는경우(return을 쓸 필요 없는 경우)는 메서드가 출력문 system.out.println("내용");으로만 이루어진 경우 뿐 인가요?
-
해결됨Next + React Query로 SNS 서비스 만들기
안녕하세요, react-query 관해서 궁금해서 질문드립니다.
react-query의 쓰임새가 잘 이해가 안가서 질문드립니다.1. 컴포넌트가 server component 일때는 react-query에 prefetchQuery를 사용하여 미리 서버에서 데이터를 가져오고 dehydrate를 통하여 클라이언트에 전송할수있는 형태로 만들어주고,HydrationBoundary 로 감싸여진 클라이언트 컴포넌트는 서버에서 미리 가져온 데이터를 클라이언트의 쿼리 캐시에 적용하여, getQueryData를 사용하여 네트워크 요청 없이 데이터를 가져올수있고,useQuery 같은 경우에는 미리 가져온 데이터 외에 클라이언트에서 데이터를 가져올 때 사용하는 걸로 이해했습니다. 맞을까요??2. queryKey 같은 경우에는 queryFn에 있는 함수에 queryKey를 넘기는 경우가 있고 안넘기는 경우가 있던데 강의에서 props에 따라 키가 바뀌는 경우에만 넘기게 된다고 이해했습니다.그러면 server component에서 모든걸 prefetchQuery 해서 getQueryData 로 가져다 쓰지 않는 이유가 useQuery를 이용해서 key 값을 다이나믹하게 바뀌는 요청들을 컨트롤 하기 위해서라고 생각이 들었습니다.하지만 아래와 같이 queryKey를 넘기지 않는 경우에도 useQuery를 사용하는데 prefetchQuery를 해놓고 getQueryData 를 사용할지, prefetchQuery 를 사용하지않고 useQuery를 사용할지 에 대해서 나누는 기준이 있을까요?const { data } = useQuery<Hashtag[]>({ queryKey: ["trends"], queryFn: getTrends, staleTime: 60 * 1000, gcTime: 300 * 1000, enabled: !!session?.user, });
-
해결됨스프링 핵심 원리 - 기본편
request 스코프 에러에 대해서 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]김영한님이 하신 그대로 작성하여 Scope를 request에 맞춰서 컨트롤러와 서비스를 만들어 스프링 부트를 작동한 경우 로그에서 에러가 발생하셨습니다.똑같이 코드를 작성하였음에도 이상하게 정상적으로 스프링 부트가 실행이 되고 있고 스크린샷으로 첨부는 하지 않았으나 Debug로 로그 범위를 확장하였음에도 해당 오류 ('request 스코프 예제 만들기' 강좌 14:30 직후)에 대해서 확인이 안되고 있습니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다.
안녕하세요.강의자료 부탁드립니다 sungsik0723@gmail.com입니다. 감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
10강 내용에 대해서 질문드립니다.
안녕하세요 이득우님.이전에 다른분이 남겨주신 내용과 위치가 같은데요,380번째줄, void AABCharacterPlayer::ServerRPCAttack_Implementation(float AttackStartTime) 함수에 대한 질문이 있습니다. 수업을 위해서 401번째줄에 if(!PlayerController->IsLocalController()) 조건문을 넣어주신것 같아보이긴 하는데, 사실 엄밀하게는, 이 조건문은 아예 없어도 전혀 문제되지 않는 로직이라고 생각되는데 제가 잘못 생각한걸까요? 좀 찝찝하기도 해서, 혹시 제가 놓친게 있나 싶어서 질문 남깁니다. 위 조건문이 없어도 되는 이유는, 해당 로직이 있는 곳은 클라이언트에서는 절대 동작할 수 없는 Server RPC 함수 내부 코드이며, 그렇기 때문에 서버에서만 동작하는 상태가 보장되고, 추가로 서버에 있는 모든 PlayerController는 서버 클라이언트 서버 모델에서 항상 IsLocalController가 false가 되기 때문이라고 생각하였습니다.다른분의 질문에서 올려주신 IsLocalController 함수는 AController의 함수로 올려주셨는데, 저희가 사용하는 Controller는 현재 형변환에 의해 PlayerController이고, 언리얼에서 함수 호출을 살펴보면, PlayerController의 IsLocalController이 호출되는것 같습니다. 그래서 위의 로직에서if (NetMode == NM_DedicatedServer)return false;에 의해 false가 항상 반환될거 같은데, 혹시 제가 놓친 부분이 있을까요?=> 혼자 고민을 이것저것 해보고 테스트 해보면서, 아마도 이렇게 해주신 이유는 Listen 서버이기 때문에 그런것 같네요. 리슨서버에서는 리슨서버의 PlayerController가 bIsLocalPlayerController가 true가 나오더군요. 그럼에도 불구하고, 일반적으로 데디케이티드 서버 환경에서는 리슨서버를 생각하지 않기 때문에 위 조건문은 필요없을것으로 생각됩니다. 게임 환경을 Client로 바꿔서 사용하였을때를 생각해보았습니다. 그리고 추가로 질문이 하나 더 있습니다.강의에서 Multicast 방식을 각각의 Controller에 대해 Client RPC를 사용해주면서 네트워크 최적화를 설명하신것에 대해서, 저는 이 부분을 멀티캐스트 하나를 사용하는것과 월드 내에 모든 클라이언트에 해당하는 Controller에게 직접 Client RPC를 직접 각각 호출해주는게 좀더 네트워크 성능상 좋다, 라고 이해했는데, 이 부분은 제가 올바르게 이해한게 맞을까요? 언제나 좋은 강의 해주시고, 질문도 꼼꼼하게 달아주셔서 감사드립니다(_ _)
-
미해결[리액트 1부] 만들고 비교하며 학습하는 리액트 (React)
view.js의 on 메소드에 대해 질문드립니다
on(eventName, handler) { on(this.element, eventName, handler); return this; }view.js의 on 메소드에서 helper.js의 on 메소드를 호출하는 코드를 작성하셨는데 그냥 view.js의 on에 파라미터를 세 개를 넣지 않고 이런 식으로 작성하신거는 어떤 코드 작성 패턴 같은걸까요?
-
해결됨[C#/.NET 7.0]어서와, WPF는 처음이지?
세션2 DB CRUD 에서 실행 오류 건.
세션2 DB CRUD...강의에서 에러가 납니다. app.xaml.cs에서 "services.AddSingleton<IDatabase<GangnamguPopulation>, GangnamguPopulationService>();" 항목을 추가 해야 정상적으로 실행이 되네요. 동영상에서는 눈씻고 봐도 아래 서비스 등록하지 않고 진행했었는데 계속 에러 나서 공유하신 코드를 보고나서 알았습니다. 동영상 수정해 주세요.
-
해결됨[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
emotion_img를 못받아오고 있어요
이번에 페이지 구현-일기 쓰기 (/new) 를 듣고 따라 적어보는 중에 잘 해결되지 않는 부분이 있어서 질문을 올립니다! 다른 기능은 정상적으로 작동하고 다른 컴포넌트에서도 img파일을 정확히 불러오는데 DiaryEditor.js 에서만 emotinItem으로 emotion_img를 전달하는데 이미지가 뜨지 않고 오류가 발생합니다 이런식으로 onClick is not a function 이라고 나오고 DiaryEditor에도const env = process.env; env.PUBLIC_URL = env.PUBLIC_URL || "";를 추가해봤지만 해결되지 않았습니다 어떻게 해야될까요?import { useRef, useState, useContext } from "react"; import { useNavigate } from "react-router-dom"; import MyHeader from "./MyHeader"; import MyButton from "./MyButton"; import EmotionItem from "./EmotionItem"; import { DiaryDispatchContext } from ".././App"; const env = process.env; env.PUBLIC_URL = env.PUBLIC_URL || ""; const emotionList = [ { emotion_id: 1, emotion_img: process.env.PUBLIC_URL + `/assets/emotion1.png`, emotion_descript: "완전 좋음", }, { emotion_id: 2, emotion_img: process.env.PUBLIC_URL + `/assets/emotion2.png`, emotion_descript: "좀 좋음", }, { emotion_id: 3, emotion_img: process.env.PUBLIC_URL + `/assets/emotion3.png`, emotion_descript: "그럭저럭", }, { emotion_id: 4, emotion_img: process.env.PUBLIC_URL + `/assets/emotion4.png`, emotion_descript: "별로임", }, { emotion_id: 5, emotion_img: process.env.PUBLIC_URL + `/assets/emotion5.png`, emotion_descript: "최악임", }, ]; const getStringDate = (date) => { return date.toISOString().slice(0, 10); }; const DiaryEditor = () => { const contentRef = useRef(); const [content, setContent] = useState(""); const [emotion, setEmotion] = useState(3); const [date, setDate] = useState(getStringDate(new Date())); const { onCreate } = useContext(DiaryDispatchContext); const handleClickEmote = (emotion) => { setEmotion(emotion); }; const navigate = useNavigate(); const handleSubmit = () => { if (content.length < 1) { contentRef.current.focus(); return; } onCreate(date, content, emotion); navigate("/", { replace: true }); // 뒤로가기 막기 }; return ( <div className="DiaryEditor"> <MyHeader headText={"새 일기쓰기"} leftChild={<MyButton text={"< 뒤로가기"} onClick={() => navigate(-1)} />} /> <div> <section> <h4>오늘은 언제인가요?</h4> <div className="input_box"> <input className="input_date" value={date} onChange={(e) => setDate(e.target.value)} type="date" /> </div> </section> <section> <h4>오늘의 감정</h4> <div className="input_box emotion_list_wrapper"> {emotionList.map((it) => ( <div key={it.emotion_id}> <EmotionItem key={it.emotion_id} {...it} onClick={handleClickEmote} isSelected={it.emotion_id === emotion} /> </div> ))} </div> </section> <section> <h4>오늘의 일기</h4> <div className="input_bot text_wrapper"> <textarea placeholder="오늘은 어떤가요?" ref={contentRef} value={content} onChange={(e) => setContent(e.target.value)} /> </div> </section> <section> <div className="control_box"> <MyButton text={"취소하기"} onClick={() => navigate(-1)} /> <MyButton text={"작성완료"} type={"positive"} onClick={handleSubmit} /> </div> </section> </div> </div> ); }; export default DiaryEditor;