묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
JPA 질문
엔티티에 키가 두개이상일 경우 JpaRepository를 extends 할때 JpaRepository<entity, id(의자료형?)>을 써야하는걸로 알고있는데 키가 두개이상이면서 키 두개 모두 자료형이 같을 경우 어떻게 해야 되는지 궁금합니다
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
고차함수 부분 질문있습니다!!
항상 좋은 강의 해주셔서 감사합니다.교재 217p에서 func() 함수와 innerFunc3() 여기서요! 다른 부분은 다 이해가 가는데 const innerFunc3 = func()에서 func에서는 매개변수가 필요한데 매개변수가 전달이 안된거고,func()는 () => { console.log(msg) }라고 이해했습니다.예제를 실행해보면 innerFunc3() 은 undefinde가 잘 나오는데제가 추가적인 예시를 한번 만들어봤습니다. const a = () => { console.log(msg)}이렇게 하고 a()는 에러가 나더라고요..교재 예제에서는 func()이렇게 했을 때 매개변수가 전달이 되지 않았는데도 에러가 발생하지 않은 이유가 궁금합니다
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
배열 출력
short month[12] = {1,2,3,4,5}; cout << month << endl; 출력을 해보면 12345가 아닌 쓰레기값이 나오는데 왜 그런건가요?
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
onClickNumber 선언이 궁금합니다
항상 감사합니다.const OnclickNumebr = function ~~ 이렇게 하시고 리스너 함수로 설정하셨는데저는 애초에 function onClickNumebr()이라고 선언 후 .addEventListener('click',()=>{onClickNumebr(1)}) 이런 식으로 작성을 했습니다.찾아보니깐 표현식 선언식이라고 하는데 어떤 상황에서 어떤게 맞는건지 좀 헷갈리더라구요...제로초님은 왜 이 상황에서 표현식을 쓰신건지, 앞으로 어떤 상황에 맞게 써야하는건지 궁금합니다!!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
7:30 if (isPrime)
if (isPrime) Console.WriteLine("소수입니다!"); else Console.WriteLine("소수가 아닙니다!"); 이 부분에서 if (isPrime == true) 라고 안쓰고 if (isPrime)이라고만 써도 되는지 잘 이해가 되지 않습니다. 왜 isPrime만 써도 잘 실행 될까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
WAS 관련 질문 입니다!
안녕하세요 강의 잘듣고 있습니다 다름이 아니라 강의를 통해서 간단한 프로젝트를 진행하던 과정중에 웹소켓을 사용 하게 되었는데 관련하여 질문드립니다 ( 추가적으로 http 관련 하여 질문 드립니다) 1. 저의 잘못된 지식일 수 도 있지만 서버에서 클라이언트와 연결을 할때 소켓을 통해서 연결을 하고 나서 통신이 이루어 지는 것으로 알고 있습니다. 서버의 각 소켓들은 해당 서버의 ip와 포트번호로 구분이 된다는 것으로 알고 있구요. 여기서 의문점이 나오게 되는데 http 또한 소켓통신으로 서버가 응답을 보내고 나서 ack 가 오면 해당 통신을 하던 소켓을 바로 닫는 것으로 알고 있습니다 그러면 톰캣에서 80번 포트를 연상황이라고 가정했을 때 80번으로는 request요청만 받고 톰켓 자체적으로 새로운 소캣(새로운 포트)를 열고 통신을 한다고 알고 있는데 제가 알고 있는 내용이 맞는지 궁금합니다. 2. 소켓의 구분자가 포트와 관련이 있다면 서버 컴퓨터에서 지원하는 tcp/ip 포트의 갯수를 넘는 요청이 들어오면 오류가 나나요?? 이것이 궁금합니다 3. 웹소켓을 사용하게 되었는데 spring boot 를 사용하던 와중에 일반적인 http 컨트롤러와 웹소켓 핸들러가 프로젝트에 같이 있게 되었습니다. 이런 식으로 진행하는 것이 맞는 지와 http 컨트롤러들은 서블릿 디스패처가 컨트롤러를 통해서 url 에 맞는 컨트롤러로 매핑을 시켜주는 것으로 알고 있는데 웹소켓은 매핑이 어떤식으로 되는것인지 궁금합니다(sockJS/ STOMP를 사용하지 않은 그냥 깡 웹소캣입니다) 여기서도 1번의 질문의 반복인데 새로운 웹소켓 세션이 생성될때 세션 하나마다 하나의 스레드 및 하나의 포트를 차지하나요? 감사합니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
hive managed table 관련문의
안녕하세요 extenstion table은 hive가 hdfs의 파일구조를 읽기위한 하나의 통로같은 느낌을 받았습니다. 이는 현재 클라우드에 여러 dw 서비스가 data lake의 비정형파일을 참조쿼리할때랑 유사한 방식이더군요. 다만 궁금한 것은 managed table은 아마 참조방식이 아니라 집계 적재되는 느낌인데 이 테이블은 hdfs에 적재되는 것인지 아니면 hive 서버 내부에 별도 저장되는 것인지 문의드립니다. 그렇게 되면 hive를 통한 dw를 구축하는 아키덱쳐에도 상당한 양의 공간이 필요하다고 여겨지는데 mamaged table이 분산으로 저장이 되지 않는다면... 과연 비용상으로나 성능상으로나 구축 의미가 있는지 싶어서 문의드립니다.
-
미해결파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
pygame.time.get_ticks() 질문있습니다.
프로그램중 이부분이 이해가 안갑니다. 강사님은 두번째 줄처럼 프로그램하셨는데 start_ticks() 에도 pygame.time.get_ticks()이 들어있는데 왜 pygame.time.get_ticks()에서 pygame.time.get_ticks()을 왜 빼주는것인지요? 첫번째 줄처럼 프로그램해도 출력은 똑같은데 왜 두번째 줄처럼 하시는지 알수있을까요?
-
미해결최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
말씀하신 부분중 궁금한게 있어서 문의남깁니다.
1.4 테슬라 컴퓨터 비전 얘기를 하실때 7분 쯔음에 다수의 카메라가 동일한 물체를 표현할때 각기 다른 파트에 집중해서 CNN만으로 정보를 조합해서 우리가 만들어 놓은 공간으로 맵핑이 어렵다고 말씀하셨는지 왜 어려운지 이해가 안돼서 문의 남깁니다. 감사합니다. -이아름 드림
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 생성 시점과 역할 질문드립니다!
안녕하세요. 질문 글을 작성하였는데 누락된 것 같아서 다시 질문드립니다! https://www.inflearn.com/questions/405451 위의 글 복붙입니다! 서블릿에 관련하여 궁금한 것이 생겨서 질문 드리고 싶습니다. 1. 서블릿 객체는 언제 생성되나요? 처음 스프링 부트가 띄워질 때 만들어 지는 것인가요? 아니면 url mapping이 되어서 서블릿 객체가 필요해지면 생성되나요? 그리고 스프링에서 사용하는 dispatcherservlet은 언제 생성되나요? 2. HttpServelet reqest 객체에 HTTP 요청 메시지 파싱해서 넣고 처리해주는게 서블릿 객체라고 배웠습니다. 그렇다면 HttpServelet response의 내용을 바탕으로 HTTP 응답 메시지를 생성하는 것도 서블릿이 하나요? 3. 서블릿의 요청 메시지 처리 작업은 언제 이루어지나요? was가 url에 맞는 서블릿 객체의 service()를 수행하는데, 저희가 만든 service에는 요청 메시지 파싱 작업이 없어보입니다! service를 부르기 전에 다른 메소드가 먼저 불리는 것인가요? 감사합니다!
-
미해결Slack 클론 코딩[실시간 채팅 with React]
로그인후 성공후에 swr로 요청한 user가 호출되지 않습니다
안녕하세요! swr 사용하기(쿠키공유하기) 강좌를 보던중에 코드를 제로초님과 분명 똑같이 작성했는데 저는 로그인 성공후에 swr에서 user를 확인하는 get 방식 api가 호출되지 않습니다 ㅠㅠ 로그인 화면 접속시에는 강좌와 같이 호출이 되는데말이죠.. 몇일 고민하다 글올립니다ㅠㅠ 무엇이 문제인가요 네트워크 요청 Login/index.tsx import useInput from "@hooks/useInput"; import { Success, Form, Error, Label, Input, LinkContainer, Button, Header } from "@pages/SignUp/styles"; import fetcher from "@utils/fetcher"; import axios from "axios"; import React, { useCallback, useState } from "react"; import { Link } from "react-router-dom"; import useSWR from "swr"; const LogIn = () => { const { data, error } = useSWR("http://localhost:3095/api/users", fetcher); const [logInError, setLogInError] = useState(false); const [email, onChangeEmail] = useInput(""); const [password, onChangePassword] = useInput(""); const onSubmit = useCallback( (e) => { e.preventDefault(); setLogInError(false); axios .post("http://localhost:3095/api/users/login", { email, password }) .then(() => {}) .catch((error) => { setLogInError(error.response?.data?.statusCode === 401); }); }, [email, password], ); return ( <div id="container"> <Header>Sleact</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" id="email" name="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" id="password" name="password" value={password} onChange={onChangePassword} /> </div> {logInError && <Error>이메일과 비밀번호 조합이 일치하지 않습니다.</Error>} </Label> <Button type="submit">로그인</Button> </Form> <LinkContainer> 아직 회원이 아니신가요? <Link to="/signup">회원가입 하러가기</Link> </LinkContainer> </div> ); }; export default LogIn; fetcher.ts import axios from "axios"; const fetcher = (url: string) => axios.get(url).then((response) => response.data); export default fetcher;
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의를 다 듣고 궁금한점이 있어 질문남깁니다
계속 배포가 진행중이고 고정 트래픽이 나오는 서비스에서 비즈니스 요구사항의 추가로 member 엔티티에 한개의 컬럼을 추가하여야 한다면 이미 회원가입이 되어있는 유저들의 정보를 유지하면서 안전하게 새로운 컬럼을 추가하기 위해서는 어떻게 해야하나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
H2 DB 연결이 안됩니다.
h2 최신 버전에서 발생하는 쿼리 문제때문에 기존에 있었던 h2를 삭제하고, 다시 설치를 진행했는데.. 아래처럼 90030 에러가 뜨면서 연결이 안됩니다. <?xml version="1.0" encoding="UTF-8"?><persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit></persistence> <dependencies> <!-- JPA 하이버네이트 --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.3.10.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency></dependencies> h2 콘솔에서 연결 요청시 발생하는 에러 File corrupted while reading record: null. Possible solution: use the recovery tool [90030-200] 90030/90030 (도움말)org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: null. Possible solution: use the recovery tool [90030-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:622) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:194) at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:222) at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:182) at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:103) at org.h2.engine.Database.getPageStore(Database.java:2659) at org.h2.engine.Database.open(Database.java:675) at org.h2.engine.Database.openDatabase(Database.java:307) at org.h2.engine.Database.<init>(Database.java:301) at org.h2.engine.Engine.openSession(Engine.java:74) at org.h2.engine.Engine.openSession(Engine.java:192) at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171) at org.h2.engine.Engine.createSession(Engine.java:166) at org.h2.server.TcpServerThread.run(TcpServerThread.java:168) at java.base/java.lang.Thread.run(Thread.java:834)Caused by: java.lang.IllegalStateException: The write format 2 is larger than the supported format 1, and the file was not opened in read-only mode [1.4.200/5] at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950) at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:741) at org.h2.mvstore.MVStore.<init>(MVStore.java:396) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3579) at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:170) ... 11 more at org.h2.message.DbException.getJdbcSQLException(DbException.java:622) at org.h2.engine.SessionRemote.done(SessionRemote.java:611) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:147) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:321) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152) at org.h2.Driver.connect(Driver.java:69) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:309) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:289) at org.h2.server.web.WebServer.getConnection(WebServer.java:785) at org.h2.server.web.WebApp.login(WebApp.java:1008) at org.h2.server.web.WebApp.process(WebApp.java:223) at org.h2.server.web.WebApp.processRequest(WebApp.java:173) at org.h2.server.web.WebThread.process(WebThread.java:139) at org.h2.server.web.WebThread.run(WebThread.java:94) at java.base/java.lang.Thread.run(Thread.java:834) [질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
body의 높이값
지금까지 강의듣는동안 body의 높이값이 있다는건 첨들은것 같습니다. body는 단순하게 그냥 빈 화면 전체가 body라고 생각했는데....body높이값이 잇었다는게 금시초문인것 같습니다. 그래서 말씀하신 gradient 90도 돌린거랑 180도 돌린거랑 다르게 나오는것또한 전혀 이해가 안가네요...어떻게 생긴모양을 돌렸다는건지..감이 안잡히네요 ~~중요한 부분이라고 하시는데 ㅠㅠ body의 높이값을 주라는데..여태 한번도 줘본적도 못봤고... 갑자기 나오니 이해력이 떨어집니다. ㅠ 90을 줄때 높이값 안주는거랑 180일때 높이값주는거랑 계속반복해서 들어도 모르겠네요 ㅠ
-
미해결유니티 프로그래머 현업자의 기본 스킬들
4:00 ~ 5:00 정도에 음성과 뭔가 안맞는거같습니다
음성과 화면이 따로노는 느낌인데 확인한번부탁드립니다!
-
미해결실전! Querydsl
특정 필드의 그룹별 최댓값 조회와 where절에 대한 List 사용 방법
안녕하세요. 강의를 들으면서 프로젝트를 진행하고 있다가 막히는 부분이 있어서 질문드립니다. 두서 없는 질문이어서 먼저 죄송합니다. 1. 첫번째는 https://www.inflearn.com/questions/14139 와 비슷한 질문입니다. 지금 하고 있는 프로젝트에서 상품에 대한 테이블은 다음과 같습니다. id price discountPrice shopId 1 10000 9000 1 2 12000 10000 1 3 8000 7500 1 4 10000 9900 2 이때 discountPrice와 price로 할인율을 계산하였는데요. shopId별로 가장 할인율이 높은 것을 1개 뽑고 그 뽑은 것들 중에서 할인율이 높은 순으로 10개를 뽑고 싶습니다. 할인율은 (price-discountPrice)/price * 100 으로 계산하였습니다. queryDSL에서는 from에 대한 서브쿼리를 지원하지 않아 위의 질문처럼 2개 쿼리를 쓰거나 네이티브 쿼리를 쓰려고 하는데요. 이 상황에서 2개 쿼리를 쓴다는게 어떻게 써야하는지 잘 모르겠어서 질문 드립니다. 또 다음 https://helloino.tistory.com/120https://pepperoni.netlify.app/mysql%EC%97%90%EC%84%9C%20%EA%B7%B8%EB%A3%B9%EB%B3%84%20%EC%B5%9C%EC%8B%A0%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0/두 개의 자료를 참조하여 다음과 같이 만들었습니다. 할인율을 직접 보려고 rate라는 걸 추가했는데 0으로 나오네요... 왜 안되는지도 궁금합니다 QProduct p1 = new QProduct("p1");QProduct p2 = new QProduct("p2");return queryFactory.select(Projections.fields(ProductTmp.class, shop.id.as("shopId"), shop.name.as("shopName"), p1.id, p1.name, p1.price, p1.discountedPrice, p1.price.subtract(p1.discountedPrice).divide(p1.price).multiply(100L).as("rate"), p1.image)) .from(p1) .innerJoin(p1.shop, shop) .leftJoin(p2) .on(p1.shop.id.eq(p2.shop.id) .and(p1.price.subtract(p1.discountedPrice).mod(p1.price).multiply(100L) .lt(p2.price.subtract(p2.discountedPrice).mod(p2.price).multiply(100L)))) .where(p2.id.isNull()) .orderBy(p1.price.subtract(p1.discountedPrice).mod(p1.price).multiply(100L).desc()) .limit(10) .fetch(); 2. 하고 있는 프로젝트에서 Shop 이란 Entity 안에는 List<String>category가 있습니다. 그런데 DB로 들어갈때는 해당 List의 요소들을 꺼내서 ,(콤마)로 이어서 하나의 String으로 만들어 DB에 넣어주고 DB에서 꺼낼때는 ,(콤마) 기준으로 나누어서 List<String>으로 꺼내줍니다. 이때 저는 입력으로 들어오는 String category가 shop의 category 안에 있는지 판단하고 이것을 where 절에 넣고 싶어서 다음을 구현했습니다. public BooleanExpression eqCategory(String category) { return hasText(category) ? shop.category.contains(category) : null;}.where(eqCategory(category)) 그런데 해당 에러가 뜨면서 되지 않습니다. java.lang.NullPointerException: Cannot invoke "org.hibernate.persister.collection.QueryableCollection.getElementPersister()" because "queryableCollection" is null shop.category.getType()은 interface java.util.List가 나오고 shop.category.getClass()는 class com.querydsl.core.types.dsl.ListPath가 나왔습니다. queryDSL에서는 List안에 있는지 판단하는게 지원이 안되는지 궁굼하고 이런 경우에는 어떻게 해결해야 하는지 궁금합니다.
-
미해결따라하며 배우는 NestJS
bcrypt와 bcryptjs
두개의 라이브러리중 bcryptjs를 쓰신 이유가 있을까요??
-
미해결스프링 핵심 원리 - 기본편
@Primary, @Qualifier 우선순위 내용에 대해 문의드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 안녕하세요? 강의의 마지막 부분의 내용에 대해 문의드리고 싶습니다. 해당 내용은 다음과 같습니다. ------------------------------------- @Primary, @Qualifier 활용 코드에서 자주 사용하는 메인 데이터베이스의 커넥션을 획득하는 스프링 빈이 있고, 코드에서 특별한 기능으로 가끔 사용하는 서브 데이터베이스의 커넥션을 획득하는 스프링 빈이 있다고 생각해보자. 메인 데이터베이스의 커넥션을 획득하는 스프링 빈은 @Primary 를 적용해서 조회하는 곳에서 @Qualifier 지정 없이 편리하게 조회하고, 서브 데이터베이스 커넥션 빈을 획득할 때는 @Qualifier 를 지정해서 명시적으로 획득하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다. 물론 이때 메인 데이터베이스의 스프링 빈을 등록할 때 @Qualifier 를 지정해주는 것은 상관없다. 우선순위 @Primary 는 기본값처럼 동작하는 것이고, @Qualifier 는 매우 상세하게 동작한다. 이런 경우 어떤 것이 우선권을 가져갈까? 스프링은 자동보다는 수동이, 넒은 범위의 선택권 보다는 좁은 범위의 선택권이 우선 순위가 높다. 따라서 여기서도 @Qualifier 가 우선권이 높다. ------------------------------------- 마지막에 말씀하신 우선순위 순서에 대한 내용을 제가 이해한 바에 따르면 스프링은 가장 먼저 @Qualifier 이름으로 빈을 찾고, 없으면 @Primary 를 선택하게 됩니다. 즉, @Qualifier 를 먼저 조회한 후, @Primary 를 조회합니다. 그렇게 되면 @Qualifier 가 적용된 서브 db의 커넥션을 먼저 조회하고, @Primary 가 적용된 메인 db의 커넥션은 나중에 조회할 것이라는 생각이 드는데 맞는 걸까요? 우선권이라는 말이 조금 헷갈리네요. 답변 주시면 감사드리겠습니다.
-
미해결제주코딩베이스캠프 Code Festival: JavaScript 100제
33번 문제 for문대신 join 사용
안녕하세요 33번문제 혹시 for문을 join()을 사용해 아래처럼 풀면 다른 문제되는 상황이 있을까요? 차이가 궁금합니다 console.log(text.split(' ').reverse().join(' '))
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
intersectionObserver적용 했는데 왜 계속 inView 값이 False로 찍힐까요
import { useInView } from 'react-intersection-observer'; .... const Home = () => { ... const { mainPosts, hasMorePosts, loadPostsLoading } = useSelector( state => state.post, ); const [ref, inView] = useInView(); useEffect(() => { dispatch({ type: LOAD_POSTS_REQUEST, }); }, []); useEffect(() => { console.log(inView); if (hasMorePosts && !loadPostsLoading) { const lastId = mainPosts[mainPosts.length - 1]?.id; dispatch({ type: LOAD_POSTS_REQUEST, lastId, }); } }, [inView, hasMorePosts, loadPostsLoading, mainPosts]); return ( <AppLayout> .... <div ref={hasMorePosts && !loadPostsLoading ? ref : undefined} /> </AppLayout> ); ... pages/index.js 코드가 다음과 같은데 계속해서 콘솔창에 inView 값이 false라고 뜹니다. true로 변화하지 않습니다. 그래서 if 문 구절이 실행조차 되지 않는데 뭐가 문제일까요