안녕하세요 강의 재밌게 잘 듣고 있습니다~ 수업 내용 중 getMonthlyData은 Home 컴포넌트 외부에, getSortedData는 DiaryList 컴포넌트 내부에 작성하셨는데요. 이전 강의 내용에 따르면 getMonthlyData를 컴포넌트 외부에 작성하신 이유는 Home 컴포넌트가 재렌더링 될 때 다시 선언할 필요가 없어서가 맞나요?? 그렇다면 비슷한 이유로 getSortedData도 컴포넌트 외부에 작성 가능할 것 같은데 안쪽에 작성하신 이유가 궁금합니다. props를 받아서 계산하고 있긴 하지만 인자값으로 넘겨주면 될 것 같아서요 감사합니다.
로직 작성하고 테스트 실행해봤는데 카운트 쿼리까지는 실행된 거 같은데 todoDTO의 결과가 표시되지 않네요 하단에 있는 실행 결과를 봐주시고 답변을 해주시면 감사드리겠습니다 혹시 더 필요한 게 있으시면 말씀해 주세요 > Task :clean > Task :compileJava > Task :processResources > Task :classes > Task :compileTestJava > Task :processTestResources NO-SOURCE > Task :testClasses 11:41:34.918 [Test worker] INFO org.springframework.test.context.support .AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [org.zerock.apiserver.service.TodoServiceTests]: TodoServiceTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 11:41:34.987 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration org.zerock.apiserver.ApiserverApplication for test class org.zerock.apiserver.service.TodoServiceTests . ____ _ __ _ _ /\\ / ___'_ __ _ ( )_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.4.1) 2025-02-22T11:41:35.222+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Starting TodoServiceTests using Java 21.0.5 with PID 10348 (started by zzamp in C:\Users\zzamp\Desktop\apiserver\apiserver) 2025-02-22T11:41:35.223+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : No active profile set, falling back to 1 default profile: "default" 2025-02-22T11:41:35.536+09:00 INFO 10348 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-02-22T11:41:35.578+09:00 INFO 10348 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 35 ms. Found 1 JPA repository interface. 2025-02-22T11:41:35.798+09:00 INFO 10348 --- [apiserver] [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2025-02-22T11:41:35.837+09:00 INFO 10348 --- [apiserver] [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.4.Final 2025-02-22T11:41:35.858+09:00 INFO 10348 --- [apiserver] [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2025-02-22T11:41:36.016+09:00 INFO 10348 --- [apiserver] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2025-02-22T11:41:36.033+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-02-22T11:41:36.084+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.mariadb.jdbc.Connection@7e1d8d41 2025-02-22T11:41:36.085+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2025-02-22T11:41:36.116+09:00 INFO 10348 --- [apiserver] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 10.11.10 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown 2025-02-22T11:41:36.523+09:00 INFO 10348 --- [apiserver] [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2025-02-22T11:41:36.558+09:00 INFO 10348 --- [apiserver] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-02-22T11:41:36.897+09:00 WARN 10348 --- [apiserver] [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open -in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open -in-view to disable this warning 2025-02-22T11:41:37.114+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Started TodoServiceTests in 2.018 seconds (process running for 2.672) Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3 WARNING: A Java agent has been loaded dynamically (C:\Users\zzamp\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.15.11\a38b16385e867f59a641330f0362ebe742788ed8\byte-buddy-agent-1.15.11.jar) WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information WARNING: Dynamic loading of agents will be disallowed by default in a future release 2025-02-22T11:41:37.366+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.a.repository.search .TodoSearchImpl : search1................. Hibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 order by t1_0.tno desc limit ?,? Hibernate: select count(t1_0.tno) from tbl_todo t1_0 2025-02-22T11:41:37.646+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : org.zerock.apiserver.dto.PageResponseDTO@11f81488 Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-02-22T11:41:37.658+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-02-22T11:41:37.659+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2025-02-22T11:41:37.662+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. > Task :test BUILD SUCCESSFUL in 5s 5 actionable tasks: 5 executed 오전 11:41:37: 실행이 완료되었습니다 ':test --tests "org.zerock.apiserver.service.TodoServiceTests.testGetList"'.
안녕하세요! 섹션3 2.8)페이지별 레이아웃 설정하기 강의에서 20분44초부터 시작하는 enterKey로 페이지 이동하는 부분에서 질문 있습니다 <form>태그 + e.preventDefault() 그리고 onSubmit을 사용하면 클릭+enterKey를 작동하게 할 수 있잖아요 혹시 강사님께서는 file같은 form을 진짜 제출하는게 아닐땐 form태그 사용하는걸 지양하시는 편인가요?? 혹시 그렇다면 이유도 물어봐도 될까요?? 감사합니다!!
혹시 useQuery에 작성하는 queryKey와 queryFn함수에 작상하는 next.tags의 queryKey는 무슨 상관관계가 있는 건가요 ? 둘의 값이 무조건 같아야 하는 줄 알았는데 useQuery엔 searchParams / queryFn함수엔 searchParams.q로 작성하셔서 여쭤봅니다. (next.tags엔 문자열만 가능한 점은 알고있습니다 ! )
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. vs code에서 터미널을 열어 바로 입력하였는데 이런 창이 뜹니다. 어떻게 해결할 수 있을까요?
Editor.jsx 파일은 Props 가 없고 단순히 export default memo (editor) 코드만 있으니 당연히 리렌더링이 안되어야 하지만 리렌더링이 되고 있습니다. 그래서 App.jsx 파일에서 <TodoDispatchContext.Provider value={memoizedDispatch}> <Editor /> <List /> </TodoDispatchContext.Provider> 이렇게 리턴하는걸 <Editor />를 위쪽으로 빼면 리렌더링이 안 일어 납니다. dispatchContext 안쪽으로 editor 컴포넌트가 들어가면 리렌더링 일어나고 바깥으로 빼면 리렌더링 안 일어 나는거 설명좀 될까요?
선생님 궁금한 게 있어서 글을 남겨봅니다 오늘 To-do list 강의 세션을 완강했는데 이해를 하지 못하는 부분이 있었습니다 const onUpdate = (targetId) => { setTodo( todo.map ((it) => it.id === targetId ? { ...it, isDone: !it.isDone } : it ) ); }; onUpdate 부분을 만들때 todo.map ((it) => it.id === targetId ? { ...it, isDone: !it.isDone } : it 이분에서 ...it : !it.isDone 이 무엇을 의미하는지와 스프레드 연산자를 쓴 이유를 이해하기 어려웠습니다 const onDelete = (targetId) => { setTodo(todo.filter((it) => it.id !== targetId)); }; 에서 todo.filter((it) => it.id !== targetId) 가 삭제를 하기위해 만들어졌는데 .filter((it) => it.id !== targetId filter 를 쓴 이유와 it.id !== targetId 가 뭔지를 아직도 잘모르겠습니다 to-do list 를 배열을 이용하여 상태 관리를 하는것으로 만들었는데 천천히 공부 해보면서 적용 해볼려고 합니다 공부할떄 선생님께서 보는 학습자료나 to-do list 를 만들때 특별히 참고한게 있었는지 궁금합니다
밑에 같은 질문을 하신 분이 계시던데요. 12.15 챕터의 10:33 초에 보면 수정 으로 들어 왔을때 기본값으로 수정 전 데이터가 나온다고 되어 있습니다. 지금까지 영상을 보면서 같이 코딩을 해오고 있었는데요.. 그런데 밑에 질문 하신 분 처럼 10:33 초 전 까지의 코딩으로는 수정 시 데이터가 나오지 않습니다. 그리고 인프런 측 인지..답변 설명에 useEffect 얘기 하시던데.. useEffect(() => { if (initData) { setInput({ ...initData, createdDate: new Date(Number(initData.createdDate)), }); } }, [initData]); 이 부분은 10:33 초 전 까지는 나오지 않았습니다. 인프런 측도 답변을 주실려면 정확히 파악 후 답변을 주세요.. 뭐가 잘못된 건가요? useEffect 부분이 없어도 설명대로 수정 으로 들어가면 데이터가 나오는게 맞는건가요? 아니면 제가 뭔가 빠트린 것이 있나요?
강의 진행 도중 생긴 에러는 아니고, 순수한 궁금증에 질문 남깁니다. 제가 React 로 프론트엔드 개발은 항상 모든 컴포넌트를 화살표 함수로 작성했었습니다. 이를테면 const Home = () => { }; export default Home; 이런식으로 작성하였는데요, 근데 상기 Nextjs 강의에서도 그렇고 다른 수많은 블로그 글들에서는 전통적인 함수 선언식을 사용하더라구요. export default function Home() { }; 그 이유가 무엇일까요? 모두가 사용하는데는 이유가 있는거 같은데 관련 자료를 찾을 수가 없어서 질문드립니다. 혹시나 강제된 문법인가 싶어 해당 강의에서 사용된 페이지들을 화살표함수로 바꿔서 작성해봤는데 똑같이 에러 없이 잘 실행이 되더군요..
[username] 라우터의 page.tsx에 현재 들어온 유저정보를 받아오는 prefetchQuery랑 그 유저의 게시글을 받아오는 infinitePrefetchQuery가 있는데 두 번째 Query의 경우 서버 컴포넌트에서 실행되는 함수라 credential:"include"가 작동하지 않아 Cookie값을 따로 명시해줘야 하는걸로 알고있습니다. 근데 Cookie값을 따로 명시해주지않아도 게시글들이 잘 불러와지는데 이 과정이 궁금합니다