store에서 actions를 생성하고 store를 내보내려고 할 때에 export const useAlertModal = () => { const store = useAlertModalStore(); return store as typeof store & State; }; 이렇게 as 단언문을 추가하셨는데 저는 as typeof store & State 이 부분을 추가하지 않아도 똑같이 추론이 되고 있습니다. const store: Write<State, { actions: { open: (params: Omit<OpenState, "isOpen">) => void; close: () => void; }; }> 둘 다 이렇게 동일하게 나오는데 어떤 차이점이 있는건가요?
AI 답변으로 해결됐습니다! 강의 제목처럼 말 그대로 재생성 방지였군요..! 마운트 시 생성된 함수를 재사용하기 때문에 리렌더링 되더라도 props로 넘어간 함수는 참조 값이 똑같은 처음 생성된 함수이다. 이해했습니다! 안녕하세요, 강사님! 73강 useCallback과 함수 재생성 방지 강의의 4분 쯤의 내용에 대해 질문이 있습니다. 강의에서, useCallback 적용한 'onCreate, onUpdate, onDelete 함수가 두 번째 인수로 빈 배열을 할당했기 때문에 마운트 이후에는 다시는 생성되지 않는다.'라고 설명해주셨는데요! 그러면, 첫 마운트 이후 todo 아이템을 생성, 수정, 삭제 할 때는 해당 함수들이 어떻게 동작하는 것일까요? 동작은 하되, 생성하지 않는다.. 라고 이해를 해야 하는 걸까요..? 답변해주시면 감사하겠습니다.
안녕하세요 module.exports 나 require 등의 node js 관련 기능을 작성하는데 자꾸 자동완성에 의해서 다른 글자로 바뀌네요 ex) module.exports 작성하는데 module 작성하고 '.' 누르거나 require 작성하고 '(' 누르면 다른 거로 바뀜 강사님 화면에서는 자동완성이 나오더라도 안 바뀌는데 혹시 어떻게 설정하셨는지 궁금합니다..!
todo list 추가/삭제 시 캐시데이터도 각각 따로 해줘야하는 내용은 알겠는데, 현재 체크박스만 변경할 때 캐시데이터를 업데이트 해주는거는 불필요하지않을까 생각이 듭니다. 만약 내용 수정같은경우라면 해줘야하겠지만..(?) 이전코드와 비교해봤을때 checkbox를 수정했을 때 "todo","list" 는 id만 갖고있어 문제는 캐시데이터 업데이트 해줄일은 없고, "todo", "detail"은 바로 업데이트가 되는데 굳이 코드 수정해주는 이유를 아직 모르겠습니다.
Error: Calling setState synchronously within an effect can trigger cascading renders Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following: * Update external systems with the latest state from React. * Subscribe for updates from some external system, calling setState in a callback function when external state changes. Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. ( https://react.dev/learn/you-might-not-need-an-effect ). 이런 에러가 나오는데요. 작동도 하고, 에러가 아니라 경고에 가까운것 같습니다. 그런데 똑같이 했는데 왜 강사님 화면에는 안뜨고 제 화면에만 뜨는건지 궁금하네요
매번 강의 잘 보고 있습니다. 수업을 따라 예제를 만드는 중 스크린샷처럼 에러 메세지를 만나게 되어 문의드립니다. 저는 윈도우 환경이라 이전 강의에 status line (상태표시줄)을 만드는 부분이 bash 명령어로는 만들어지지 않아서 powershell 명령어로 확장자가 ps1인 스크립트 파일을 만들어 settings.json에 command 속성에 추가하니 상태표시줄이 정상적으로 출력이 되고 있습니다. 근데 클로드코드에서 프로젝트를 만들거나 커밋을 할때 스크린샷 처럼 bash 명령어로 statusline-command.sh 파일을 계속 읽어오면서 계속 에러메세지를 출력을 하는데 왜 매번 statusline-command.sh을 읽는지 모르겠습니다. 물론 클로드에서 오류를 만나면 다른 방법으로 시도를 계속 하면서 프로젝트를 정상적으로 생성은 하고 있습니다. 하지만 statusline-command.sh을 읽어들이는게 정상이라면 저처럼 powershell 명령어를 사용하는 사람은 .sh 파일이 아니라 .ps1 파일을 읽어오도록 세팅해서 오류를 피하고 싶은데 방법이 있는지 궁금합니다.
/init 프로젝트 초기화를 한국어로 진행해주세요. 다음 설정을 CLAUDE.md 에 포함해주세요: ## 언어 및 커뮤니케이션 규칙 - 기본 응답 언어 : 한국어 - 코드 주석 : 한국어로 작성 - 커밋 메시지 : 한국어로 작성 - 문서화 : 한국어로 작성 - 변수명/함수명 : 영어 (코드 표준 준수) 이것을 항상 /init 할 때마다 입력하는 것이 좋을까요?
getMonthlyData() 함수의 패턴이 가지는 장점이 있는지 궁금합니다. sql이라면 date 타입에 인덱스를 걸어둘수도 있기 때문에 크기 비교를 하는게 납득이 가는데 그런게 아니라면 아래 코드가 간단하고 가독성이 좋지 않나요? function filterByMonth(data, pivotDate) { return data.filter( (item) => item.date.getFullYear() === pivotDate.getFullYear() && item.date.getMonth() === pivotDate.getMonth(), ); }
안녕하세요 강사님! 수업 내용을 바탕으로 useRef 를 이용해 직전 상태값을 저장하고 관리하는 로직을 실습하던 중 궁금한 점이 생겨 질문드립니다. 강의 내용처럼 useRef 를 사용하여 렌더링 사이의 값을 보관하고 이를 화면에 출력하려고 코드를 작성했습니다. 이때 최신 ESLint 규칙에서 "Cannot access refs during render" 라는 에러(react-hooks/refs)가 발생합니다. 제가 공부한 바로는 리액트의 '렌더 단계(Render Phase)'의 순수성을 지키고 데이터 불일치를 방지하기 위해 렌더링 도중 Ref 접근을 금지한다고 이해했습니다. 이와 관련하여 강사님에게 질문드립니다. 만약 ref를 사용하는 현재의 구조를 유지하면서 리액트의 렌더링 원칙을 준수할 수 있는 더 나은 패턴(예: 커스텀 훅 등)이 있다면 무엇인지 조언 부탁드립니다. 감사합니다~!
22. REST 방식 컨트롤러 만들기(2)에서 포스트맨으로 글 등록 테스트 할 때 complete 필드가 없는 경우 Bad Request 400에러가 나는 걸 확인했습니다. { "title": "Test title", "writer": "testuser", "complete": false, "dueDate": "2026-02-04" } 위와같이 complete필드를 추가하니 잘 되었는데, 문제는 29강에서처럼 브라우저 화면에서 테스트 해보니 아래와같이 400에러가 발생합니다. 여기도 마찬가지로 입력폼에서 complete필드가 없어서 그런것 같은데 강의에서는 등록이 잘 되는게 이해가 안되네요. 섹션4까지 완성된 코드를 다운받아서 실행해보았지만 위의 사진처럼 브라우저에서 등록 시 400에러가 발생합니다.
안녕하세요 강사님! 강의에서 useRef는 값이 변경되었을 때 리렌더링을 발생시키지 않으므로 값이나 DOM 요소를 참고하고 싶을 때 사용한다고 하셨는데요. 1) 강의 예제 중, 수정이 일어난 횟수를 countRef에 담기도록 하셨는데, 이 때 값이 변경되어 ' onChange 함수에서 setInput 함수를 호출함으로써 리렌더링이 발생하는 것이고, countRef.current++는 리렌더링이 발생함과 동시에 값이 증가 되는 것 뿐이다 '라고 이해하면 되는 것일까요? 1번 코드 참고하시면 됩니다! 2) 위처럼 이해를 하다가 문득 궁금한 것이 생겼는데, 2번 코드 처럼.. useState의 input 객체에 count 프로퍼티를 추가하여 0으로 초기화 해주었습니다. 그리고 onChange 함수에서 setInput으로 count를 +1 시켜주었는데요. 1번 예제처럼 수정할 때 마다 count가 +1 되는 것을 의도하였는데, 이 때 textarea에서 ㄱ을 입력했다면, setInput 함수는 한 번 호출되며 textarea 수정과 count 증가가 동시에 발생하고 'textarea 수정 + count 증가' 이렇게 리렌더링이 한 번 발생하는 걸까요? 3) 만약 2번 질문의 답이 '결국 setInput 함수가 한 번 호출되며 작동하는 것이므로 리렌더링은 한 번이다.' 라면, 1번과 2번 코드는 '리렌더링이 발생할 때 마다 count 증가' 라는 점에서 같은 결과인 걸까요..? 질문이 좀 복잡하지만.. 답변해주시면 감사하겠습니다..! 1) useRef 사용하여 count import { useRef, useState } from "react"; export default function Test() { const [input, setInput] = useState({ name: "", bio: "", }); const countRef = useRef(0); console.log(input); console.log(countRef.current); const onChange = (e) => { countRef.current++; setInput({ ...input, [e.target.name]: e.target.value, }); }; return ( <div>...</div> ) } 2) useState로 count import { useState } from "react"; export default function Test() { const [input, setInput] = useState({ name: "", bio: "", count: 0, }); console.log(input); const onChange = (e) => { setInput({ ...input, [e.target.name]: e.target.value, count: input.count + 1, }); }; return ( <div>...</div> ) }
안녕하세요. 강의 잘 수강하고 있습니다. /usage 명령어를 통해 토큰 잔여량을 확인할 때, Resets 시간을 강의 영상처럼 (Asia/Seoul)로 확인 할 수 있을거라 생각했는데 저는 (UTC)로 표기되어 있습니다. 해당 기준 시간 설정을 어디서 어떻게 하면 되는지 여쭤봅니다. 감사합니다.
현재 29. [ADDED] 대화형 질문 기능 까지 수강했습니다. 프로젝트를 처음 시작할 때 계획모드에서 대화형 질문이 강의처럼 나오고 원하는 스택을 선택할 수 있으면 엄청 편할것같은데요, 클로드코드가 이런 스택 선택을 질문 하도록 유도할 수 있을까요? 저는 이력서 실습 후에 바로 진행해서 그런지 스택에 관련한 질문은 하지 않더라구요. 이미지에서 노란 하이라이트 부분이 클로드코드가 물어본 질문과 제 대답입니다.