inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

TodoList에서 checkBox 업데이트를 위한 onUpdate의 props전달?

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

TodoList에서 checkBox 업데이트를 위한 onUpdate의 props전달?에 대해서 질문이 있습니다 첫 번째, 부모 컴포넌트에서 자식 컴포넌트로 값(변수, 리스트, 함수 등)을 전달하는 것이 props인건지 햇갈립니다 두 번째, onUpdate의 구동방식은 이해되었습니다. 다만 app.jsx가 아니라 List.jsx에서 만들어도 되지 않나? 라는 의문점이 있습니다. 리렌더링 때문일까요? 아님 다른 이유가 있는건지 궁금합니다.

  • javascript
  • react
  • node.js
ju004100 댓글 2 좋아요 1 조회수 182

Next JS 14.2 public 폴더 미생성

해결됨

한 입 크기로 잘라먹는 Next.js

15버전이 아닌 14.2버전으로 create-next-app을 진행했는데 public 폴더가 자동으로 생기지않습니다. 15버전은 자동으로 생성이 되는데 14.2버전에는 생성되지 않는 이유가 있나요??

  • react
  • typescript
  • next.js
brh1243 댓글 2 좋아요 0 조회수 322

hydration 에러

미해결

Next + React Query로 SNS 서비스 만들기

제로초님 하신대로 그대로 프로젝트를 생성하고 실행했더니 화면은 그대로 뜨는데 에러가 1개 있어서 봤더니 hydration 에러라고 뜨네요 ㅠㅠ 지금 z-com 프로젝트를 수업용 / 연습용으로 총 2개 진행중인데 수업용 프로젝트는 이런 에러가 없었는데 연습용에서 에러가 발생하네요. 아래는 에러 코드입니다 ! Console Error Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used - A server/client branch if (typeof window !== 'undefined') . - Variable input such as Date.now() or Math.random() which changes each time it's called. - Date formatting in a user's locale which doesn't match the server. - External changing data without sending a snapshot of it along with the HTML. - Invalid HTML tag nesting. It can also happen if the client has a browser extension installed which messes with the HTML before React loaded

  • react
  • next.js
  • react-query
  • next-auth
  • msw
심현석 댓글 4 좋아요 0 조회수 2217

7.2 구글 로그인 1 - AuthUI 구현 구글 로그인 관련 질문드립니다.

해결됨

Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)

'use client'; import React, { useEffect, useState } from 'react'; import { Auth } from '@supabase/auth-ui-react'; import { ThemeSupa } from '@supabase/auth-ui-shared'; import { createSupabaseBrowserClient } from '@/lib/client/supabase'; import useHydrate from '@/app/hooks/useHydrate'; const AuthUI = () => { const supabase = createSupabaseBrowserClient(); const isMount = useHydrate(); const [user, setUser] = useState(); const getUserInfo = async () => { const result = await supabase.auth.getUser(); console.log(result); if (result?.data?.user) setUser(result?.data?.user); }; const handleLogout = async () => { supabase.auth.signOut(); window.location.reload(); }; useEffect(() => { getUserInfo(); }, []); if (!isMount) return null; return ( <section className="w-full"> <div>{user ? `로그인 됨${user?.email}` : '로그아웃'}</div> <> {user && ( <button onClick={handleLogout} className="border-2 border-black"> 로그아웃 </button> )} </> <div className="mx-auto max-w-[500px]"> <Auth redirectTo={process.env.NEXT_PUBLIC_AUTH_REDIRECT_TO} supabaseClient={supabase} appearance={{ theme: ThemeSupa }} onlyThirdPartyProviders providers={['google']} /> </div> </section> ); }; export default AuthUI; {"code":400,"error_code":"validation_failed","msg":"Unsupported provider: provider is not enabled"} 구글 로그인 시 해당 에러가 발생합니다 설정 같은 부분은 강의에 맞게 설정하였습니다

  • react
  • 클론코딩
  • next.js
  • supabase
moko 댓글 2 좋아요 0 조회수 430

익스텐션이름

해결됨

한 입 크기로 잘라먹는 Next.js

강의 중간에 요런식으로 설명나오는거 어떤 익스텐션 깔아야하나요?

  • react
  • typescript
  • next.js
댓글 2 좋아요 0 조회수 163

Next.js 페이지 별 레이아웃 적용 방법에 대한 궁금증입니다!

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요!! 페이지 별 적용을 원하는 레이아웃이 있는 경우 getLayout 함수를 컴포넌트의 메서드로 추가하여 적용하는 강의를 들었습니다. 그런 식으로 레이아웃을 설정하는 방법은 처음 봐서 매우 새롭고 신기하고 즐거운 강좌였습니다. 감사합니다! 궁금한 점이 있는데요, 그렇게 했을 때 페이지별로 최상단에 SearchableLayout 컴포넌트를 적용하는 것과 무슨 차이가 있는지 궁금했습니다. (혹은 강의에서 그렇게 설명해주신 이유가 궁금합니다!)

  • react
  • typescript
  • next.js
Sunny Sideup 댓글 2 좋아요 0 조회수 191

깃허브 권한 요청 드립니다

미해결

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

인프런 아이디 : cool3797@gmail.com 인프런 이메일 : cool3797 @gmail.com 깃헙 아이디 : cool3797 @gmail.com 깃헙 username : OtterCue

  • javascript
  • vue.js
OtterCue 댓글 1 좋아요 0 조회수 185

for loop 탈출은 return 문으로 해도 되지 않나요?

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

일곱난쟁이 문제에서, 가짜 난쟁이 둘을 발견 후에 for loop를 멈출 때 splice를 한 arr를 for loop에서 return arr 하면 전체 for loop에서 탈출하는데 그걸 사용해도 되지 않나요?

  • javascript
  • 코딩-테스트
wlsghtmeod 댓글 1 좋아요 0 조회수 147

배포 환경에서 request.nextUrl.origin 질문

해결됨

Next + React Query로 SNS 서비스 만들기

안녕하세요 nextjs를 활용해서 프로젝트를 진행하는 중에 해결되지 않는 문제가 발생하여 질문 드립니다. 현재 도커를 활용해서 nextjs를 배포하고 있는데 middleware에서 request.nextUrl.origin값이 https://localhost:3000이 들어가고 있습니다. x-forwarded-host를 찍었을때는 제가 사용하는 https://test.domain.com이 들어가는데 request.nextUrl.origin에 x-forwared-host와 같은 값이 들어가도록 설정하기 위한 방법이 있는지 알 수 있을까요??

  • react
  • next.js
  • react-query
  • next-auth
  • msw
박지수 Jisu Park 댓글 2 좋아요 0 조회수 315

안녕하세요 todos 에서 map 사용시 에러가 발생합니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. todos 콘솔 테스트 📝 ?? 을 사용하면 console 에 Array 를 보여주지만 ?? 을 빼면 undefined 로 보여줍니다. map 오류 undefiend 되면서 오류가 발생하는거 같은데 App 에서 Array 를 제대로 넘겼는데 왜 undefined 가 되는걸까요 ??

  • javascript
  • react
  • node.js
댓글 2 좋아요 0 조회수 357

투포인트알고리즘으로 풀어봤습니다.

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

투포인트 알고리즘을 생각하고 풀어봤는데 슬라이딩 알고리즘과 투포인트중에 어떤걸 선택해도 상관 없는건가요 ? /** *@function 최대매출 *@description 최대매출 알고리즘 문제 풀이 */ function solution(m, arr) { let answer = 0; let sum = 0; let lt = 0; let n = arr.length; for (let i = 0; i < m; i++) { sum += arr[i]; } answer = sum; for (rt = m; rt < n; rt++) { sum += arr[rt] - arr[lt++]; if (answer < sum) { answer = sum; } } return answer; } let arr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(3, arr));

  • javascript
  • 코딩-테스트
wyswhsl21 댓글 0 좋아요 0 조회수 154

메일 확인 부탁드립니다

미해결

풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]

punkwagon@gmail.com 입니다

  • HTML/CSS
  • javascript
  • es6
PUNKWAGON 댓글 1 좋아요 0 조회수 166

코드 리뷰 부탁드립니다.

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

문제를 보고 제가 직접 먼저 풀어봤는데 답은 맞게 나오는데 , 뭔가 좀 허술한 부분이 있을거 같아서요 , 코드 리뷰좀 부탁드립니다. function solution(a, b, c) { let cnt = 0; let sum = 0; let lt = (rt = 0); while (lt < a && rt < a) { rt++; sum += c[rt]; if (sum === b) { cnt++; lt++; sum -= c[lt]; } } return cnt; }

  • javascript
  • 코딩-테스트
wyswhsl21 댓글 1 좋아요 0 조회수 130

context 리스트 검색 안됨

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

// App.jsx import "./App.css"; import { useState, useRef, useReducer, useCallback, createContext, } from "react"; import Header from "./components/Header"; import Editor from "./components/Editor"; import List from "./components/List"; const mockData = [ { id: 0, isDone: false, content: "React 공부하기", date: new Date().getTime(), }, { id: 1, isDone: false, content: "빨래하기", date: new Date().getTime(), }, { id: 2, isDone: false, content: "노래 연습하기", date: new Date().getTime(), }, ]; function reducer(state, action) { switch (action.type) { case "CREATE": return [action.data, ...state]; case "UPDATE": return state.map((item) => item.id === action.targetId ? { ...item, isDone: !item.isDone } : item ); case "DELETE": return state.filter((item) => item.id !== action.targetId); default: return state; } } export const TodoContext = createContext(); function App() { const [todos, dispatch] = useReducer(reducer, mockData); const idRef = useRef(3); const onCreate = useCallback((content) => { dispatch({ type: "CREATE", data: { id: idRef.current++, isDone: false, content: content, date: new Date().getTime(), }, }); }, []); const onUpdate = useCallback((targetId) => { dispatch({ type: "UPDATE", targetId: targetId, }); }, []); const onDelete = useCallback((targetId) => { dispatch({ type: "DELETE", targetId: targetId, }); }, []); return ( <div className="App"> <Header /> <TodoContext.Provider value={{ todos, onCreate, onUpdate, onDelete }}> <Editor /> <List /> </TodoContext.Provider> </div> ); } export default App; // List.jsx import "./List.css"; import TodoItem from "./TodoItem"; import { useState, useMemo, useContext } from "react"; import { TodoContext } from "../App"; const List = () => { const { todos } = useContext(TodoContext); const [search, setSearch] = useState(""); const onChangeSearch = (e) => { setSearch(e.target.value); }; const getFilteredData = () => { if (search === "") { return todos; } return todos.filter((todo) => todo.content.toLowerCaes().includes(search.toLowerCase()) ); }; const filteredTodos = getFilteredData(); const { totalCount, doneCount, notDoneCount } = useMemo(() => { const totalCount = todos.length; const doneCount = todos.filter((todo) => todo.isDone).length; const notDoneCount = totalCount - doneCount; return { totalCount, doneCount, notDoneCount, }; }, [todos]); return ( <div className="List"> <h4>Todo List 🎯</h4> <div> <div>total: {totalCount}</div> <div>done: {doneCount}</div> <div>notDone: {notDoneCount}</div> </div> <input value={search} onChange={onChangeSearch} placeholder="검색어를 입력하세요" /> <div className="todos_wrapper"> {filteredTodos.map((todo) => { // return <div>{todo.content}</div>; return <TodoItem key={todo.id} {...todo} />; })} </div> </div> ); }; export default List; 안녕하세요. 11-2강을 수강하며 코드를 따라 작성하였는데 리스트 검색을 하려고 하면 빈 창으로 바뀝니다. 리스트 추가와 삭제는 잘 작동합니다. 무엇이 문제일까요? 미리 답변 감사합니다 🙇🏻‍♀️ 🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • javascript
  • react
  • node.js
황유나 댓글 3 좋아요 0 조회수 314

package.json

해결됨

한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지

package.json을 설치할때 해당파일의 설치 위치가 꼭 server파일의 상위폴더인 TRIP-WIKI폴더여야하나요? server파일안에 설치해도 상관없는건지 상관있으면 무엇이 다른건지 알수 있을까요?

  • javascript
  • rest-api
  • spa
  • dom
에그 댓글 1 좋아요 0 조회수 141

최종 프로젝트 적용

해결됨

웹 프론트엔드를 위한 자바스크립트 첫걸음

영상 촬영 시기와 현재 크롬 화면이 달라서 질문드립니다. 개발자 모드가 없어서 그런데 등록을 마쳐야 적용 가능할까요?

  • javascript
  • dom
  • 프로젝트
  • 크롬
고구마의고구마 댓글 2 좋아요 0 조회수 199

append&appendChild+메소드 호출

해결됨

웹 프론트엔드를 위한 자바스크립트 첫걸음

// node tree에 설정(부모-자식 관계 설정) bookmarkItem.appendChild(bookmarkInfo); bookmarkItem.appendChild(bookmarkDelBtn); bookmarkInfo.appendChild(bookmarkUrl); bookmarkUrl.appendChild(urlIcon); bookmarkUrl.appendChild(nameElement); urlIcon.append(urlIconImg); bookmarkItemList.appendChild(bookmarkItem); 섹션 7의 6강 수강중에 해당 코드에 의문이 생겨서 질문 드립니다. append와 appendchild 2가지 메소드를 활용하셨는데 두 가지 차이가 검색해 봤을 땐 append는 노드뿐만 아니라 텍스트도 추가 가능하다고해서 appendchild로 바꿔봤더니 오류가 발생했습니다. 두가지 차이가 무엇인지 알 수 있을까요? 그리고 메소드 호출시 괄호가 있는 것과 없는 것의 차이가 궁금합니다. addEbentListener같은 곳에 사용되는 콜백함수에는 괄호를 안 붙여도 되는 건지 궁금합니다. // 1번 document.getElementById("cancel-btn").addEventListener("click", newBookmarkToggle); // 2번 document.getElementById("cancel-btn").addEventListener("click", newBookmarkToggle());

  • javascript
  • dom
  • 메소드
  • 괄호
  • node
  • append
고구마의고구마 댓글 1 좋아요 1 조회수 161

코드샌드박스 업데이트

해결됨

웹 프론트엔드를 위한 자바스크립트 첫걸음

코드샌드박스가 또 업데이트 된것같습니다 자바스크립트코드를 작성하려고 들어갔는데 강좌내용과 달라서 진행을 못하고 있네요.. 도와주세요 자바스크립트가 두개가 있는데 두개다 들어가면 또 둘다 강좌랑 다르더라고요;;

  • javascript
  • dom
김태원 댓글 2 좋아요 0 조회수 187

v15 업데이트 이후, 하이드레이션 오류 발생

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요. v15로 업데이트를 했는데 하이드레이션 오류가 발생하기 시작했습니다. /book/1 페이지에서 vscode 저장으로 Next.js가 재실행이 되면은 오류가 발생하는데요. 하이드레이션 과정에서 서버와 클라이언트의 HTML이 일치하지 않아 클라이언트에서 재생성이 된다는 오류가 발생하고 있습니다. 그래서 속도 저하가 굉장히 심해진 상태입니다. https://nextjs.org/docs/messages/react-hydration-error 이 곳에서 오류가 발생하는 원인과 해결법을 말해주고는 있는데, 지금 저한테만 발생하는 현상인건지 좀 궁금합니다.

  • react
  • typescript
  • next.js
mins 댓글 2 좋아요 0 조회수 494

동물 앨범 만들기 2-2 문의

해결됨

한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지

안녕하세요 우선 강의 잘 듣고 있습니다^^ 동물 앨범 만들기 2-2를 진행하다가 문의 사항이 있어 글을 남겨 봅니다. 아래 코드에서 this.setState에 ...this.state 값을 넣어주면서 "spread (…) 연산자를 사용해서 기존의 상태를 유지해주고" 라고 설명을 해주셨는데요 이 부분이 이해가 잘 가지 않아서요~ this.setState({ ...this.state, currentTab: name, photos: await request(name), }); setState 함수 newState 매개변수에 { ...this.state, currentTab: name, photos: await request(name), } 객체 값이 들어가면서 ...this.state 값은 어디 값에 들어가게 되서 기존 상태를 유지한다고 봐야 될까요?? export default function App($app) { 7 this.state = { 8 currentTab: 'all', 9 photos: [], 10 }; 11 12 const tabBar = new TabBar({ 13 initialState: '', 14 onClick: async (name) => { 15 this.setState({ 16 ...this.state, 17 currentTab: name, 18 photos: await request(name), 19 }); 20 }, 21 }); 22 23 const content = new Content(); 24 25 this.setState = (newState) => { 26 this.state = newState; 27 tabBar.setState(this.state.currentTab); 28 content.setState(this.state.photos); 29 }; 30}

  • javascript
  • rest-api
  • spa
  • dom
solarscw85 댓글 2 좋아요 0 조회수 181

인기 태그

인프런 TOP Writers

주간 인기글