2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
108
22 asked
// 간단한 회원가입 폼
// 1. 이름
// 2. 생년월일
// 3. 국적
// 4. 자기소개
import { useState , useRef} from "react";
const Register = () =>{
const [input, setInput] = useState({
name : "",
birth : "",
country : "",
bio : ""
});
const refObj = useRef();
console.log(refObj);
const onChange = (e) =>{
setInput({
...input,
[e.target.name] : e.target.value
})
};
return (
<div>
<div>
<input name = "name" value={input.name} onChange={onChange} placeholder={"이름"}></input>
</div>
<div>
<input name = "birth" type="date" value={input.birth} onChange={onChange} placeholder={"생년월일"}></input>
</div>
<div>
<select name = "country" value={input.country} onChange={onChange}>
<option>한국</option>
<option>미국</option>
<option>영국</option>
</select>
</div>
<div>
<textarea name = "bio" value={input.bio} onChange={onChange}/>
</div>
</div>
);
};
export default Register;
=> 오류 발생
@workspace /explain Error: Cannot access refs during render
React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
17 |
18 | const refObj = useRef();
> 19 | console.log(refObj);
| ^^^^^^ Passing a ref to a function may read its value during render
20 |
21 | const onChange = (e) =>{
22 | setInput({
🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요)
제목을 구체적으로 작성해 주세요
✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다.
⛔️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등
비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요!
코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다.
깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요
직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲
답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요
비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요!
제 답변이 여러분께 도움이 되었는지 저도 알고 싶어요 🥲
강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요
더 빠른 답변이 가능합니다!
Answer 2
0
안녕하세요 rumi du님 이정환입니다.
결론부터 말씀드리면, 강의 코드가 틀린 건 아닙니다!
console.log(refObj)는 실제로 오류를 발생시키지 않습니다.
올려주신 에러 메세지를 보면, @workspace/explain 이라는 접두사와 함께 시작하는데요, 이처럼 @workspace/explain으로 시작하는 에러메세지는 VSCode의 코파일럿의 설명으로 실제 프로젝트 동작에는 아무런 영향을 주지 않습니다.
아래와 같이 코파일럿을 사용하지 않는 환경에서의 제 코드는 아무런 오류도 발생하지 않는걸 보실 수 있습니다 😀

그렇다면 Copilot이 이런 메세지를 왜 보여주냐! 이는 잠재적으로 문제가 될 수 있는 코드이기 때문입니다. 렌더링 중에 ref를 함수에 전달하면 그 함수가 ref의 값을 읽을 수도 있기 때문에, Copilot이 "혹시 이거 의도한 거 맞아?" 하고 알려주는 거죠.
그런데 우리는 refObj를 콘솔에서 학습 목적으로 까보려는 것이기 때문에, 이런 경고는 무시해도 됩니다. 실제로 프로젝트를 실행해보시면 정상적으로 동작하는 걸 확인하실 수 있을 거예요!
-1
useRef() 훅을 사용했다면 해당 변수의 현재 값에 접근하려면 refObj.current 로 참조해야 합니다.
그리고 현재 const refObj = useRef() 는 초기값을 지정하거나 ref 속성으로 연결한 것이 보이지 않습니다.
프론트엔드 학습 수준 문의
0
8
1
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
34
2
데이터 로딩중 화면만 계속 나와요!!
0
47
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
70
2
이후의 커리큘럼 문의
0
97
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
46
2
최적화 관련 질문있습니다 (useMemo 등)
0
81
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
77
3
Date 객체에 관련하여 질문드립니다.
0
80
2
리액트 개정판 교재 질문
0
56
2
예제코드가 안나와요!
0
72
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
101
2
onMouseEnter 관련 문의 드립니다
0
87
3
배열의 렌더링 관련 질문 드립니다.
0
69
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
130
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
65
1
vs code 자동완성관련 문의
0
102
2
91강 useEffect내에서 상태변화함수 호출시 발생하는 에러
1
173
2
87강 필터 함수 질문
0
64
2
useRef, useState count 비교
0
62
2
안된다고했던 이유가 무엇이었는지 모르겠습니다
0
84
2
85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.
0
72
2
투두리스트 실습을 충실히 진행한 상태에서 감정일기장 실습을 따라할 필요가 있을까요?
0
53
2
83강 css 질문입니다
0
51
2

