173만명의 커뮤니티!! 함께 토론해봐요.
미해결
2시간으로 끝내는 프론트엔드 테스트 기본기
강사님, 강의 잘 듣고 있습니다. 강의 중 jest에서 한글로 적을 때는 test, 영어로 적을 때는 it으로 적는 게 가독성이 좋다고 설명해주셨는데, 실무 팀에서는 이런 네이밍 컨벤션을 어떻게 정하고 유지하는지, 혹시 Prettier, ESLint 같은 도구로 특정 스타일(예: test만 사용)을 강제하는 경우도 있는지 궁금합니다.
react jest 소프트웨어-테스트 Cypress storybook chatgpt
JW Yang
2025-10-10T16:56:26.697Z
댓글 1
좋아요 0
조회수 76
미해결
한 입 크기로 잘라먹는 Next.js
안녕하세요! 좋은 강의로 Next.js를 배울 수 있게 해주셔서 감사드립니다. Full Route Cache 관련해서 궁금한 점이 있습니다. 레이아웃 파일에서 cookies()나 headers() 같은 동적 함수를 사용하는 경우, 그 아래에 있는 페이지들도 영향을 받는지 궁금합니다..! 예를 들어서 블로그 레이아웃에서 사용자 테마를 쿠키로 가져오고 있고, 블로그 포스트 페이지 자체는 force-cache로 정적 데이터만 사용한다면, 이 경우 페이지가 Static으로 빌드될 수 있을까요? 아니면 상위 레이아웃이 Dynamic이면 하위 페이지도 함께 Dynamic으로 처리되는 건지 궁금합니다! 감사합니다.
react typescript next.js 카카오공채-개발
junyeokk
2025-10-10T15:15:24.708Z
댓글 1
좋아요 0
조회수 83
해결됨
프론트엔드 마스터클래스
안녕하세요, 좋은 강의 잘 보고 있습니다. 혹시 CDN 등 배포 관련 섹션이나 내용이 추가될 예정이 있을지 궁금합니다.
javascript react 함수형-프로그래밍 객체지향 next.js
Eun
2025-10-10T15:00:57.466Z
댓글 1
좋아요 0
조회수 175
미해결
React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발
primitive는 map을 통해 texture를 불러올 수 없을까요? 다른 텍스쳐 불러오는 연습을 하면서 Material에서는 map이라는 속성을 통해 texture를 불러올 수 있다고 알게 되었는데 primitive에서는 안되서 궁금합니다!
javascript react typescript 인터랙티브-웹 three.js webgl react-three-fiber
study with dino
2025-10-10T14:56:39.238Z
댓글 2
좋아요 0
조회수 124
미해결
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의를 통해 useReducer를 사용하면 복잡한 useState의 set 함수 들로 case로 깔끔하게 정리할 수 있는 것을 보았습니다. 그렇다면 실무에서는 어떤 것을 더 많이 사용하나요? 아니면 두 hooks의 대표 사용하는 케이스 ?? 경우 들을 알려주시면 감사하겠습니다!!! 🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요) 제목을 구체적으로 작성해 주세요 ✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다. ⛔ ️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다. 깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요 직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲 답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 제 답변이 여러분께 도움이 되었는지 저도 알고 싶어요 🥲 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 더 빠른 답변이 가능합니다!
동원참치
2025-10-10T14:56:07.267Z
댓글 2
좋아요 0
조회수 134
미해결
React Native with Expo: 제로초에게 제대로 배우기
맥북 환경에서 수업을 따라가다 보니, Java가 설치되어 있지 않아 라이브러리 설치 시 오류가 발생했습니다. 이처럼 개발 환경(운영체제, 설치 여부 등)에 따라 발생하는 오류는 실무에서는 어떻게 사전에 파악하고, 배포 시에는 어떻게 대응하는지 궁금합니다.
react react-native 하이브리드-앱 typescript expo
조영제
2025-10-10T14:53:31.202Z
댓글 1
좋아요 0
조회수 88
미해결
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의를 통해 React의 여러 개념을 배웠습니다. 어느 정도 수준에 도달해야 리액트의 기본기를 제대로 이해했다고 스스로 판단 할 수 있을 지 궁금합니다. 예를 들어, 이 강의에서 다룬 TodoList 프로젝트를 혼자서 처음부터 끝까지 구현할 수 있는 정도라면, React의 핵심원리를 충분히 체화했다고 볼 수 있을까요 ?
javascript react node.js 카카오공채-개발
BT
2025-10-10T14:53:02.007Z
댓글 2
좋아요 0
조회수 133
미해결
[React 2부] 고급 주제와 훅
pushState로 경로를 바꿀 때는 렌더링이 다시 일어나지 않는데, popstate 이벤트에서는 왜 렌더링이 필요한 건가요
javascript react 웹앱 React-Context react-hooks
theblessedcity
2025-10-10T14:51:55.028Z
댓글 2
좋아요 1
조회수 124
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
4.2) 첫 React App 생성하기 강의 질문 입니다. 10:15에서 module.exports = { … } 로 시작하는데 이건 cjs 시스템 문법으로 알고 있는데, 5:14에서 나오는 package.json의 type은 module로 되어있는데 두개의 시스템을 동시에 사용하는게 가능한건가요?
javascript react node.js 카카오공채-개발
ab kim
2025-10-10T14:46:57.216Z
댓글 2
좋아요 0
조회수 130
해결됨
DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]
안녕하세요~! 궁금한 점이 생겨 문의드립니다! DOM + CSSOM > Render Tree를 만들기 때문에 CSS 배치에 따라 CRP에 영향을 주는 것까지는 이해했는데요! script는 async 또는 defer 속성을 알맞게 적어주기만 하면 실행 순서만 보장이 되고 안되고의 차이이고 CRP에는 영향을 주진 않는건가요?
HTML/CSS javascript react dom frontend
정수지
2025-10-10T14:45:38.460Z
댓글 2
좋아요 0
조회수 124
미해결
React Native with Expo: 제로초에게 제대로 배우기
질문은 아닌데..챌린지 미션에 질문하기가 있어서 쓰니까 신경쓰지 말아주세요... Link Share 공유 url은 components/Post.tsx에 있음 공식문서: share 부분 확인 ios에서는 url을 같이 넣어주면 좋고, 안드로이드에서는 title을 넣어주면 좋음 File Share expo-sharing 라이브러리 설치 후 사용 폰에 있는 파일을 다른 앱에 공유 가능 다른 앱에서 내 expo앱으로 공유하고 싶을 때 expo기본지원x Expo Share Extension이라는 외부 라이브러리를 따로 설치해서 사용해야 함 근데 npm run prebuild를 해야하는데, 이럼 expo-go에서 벗어나 native단을 건듦 한번 설치하면 못돌아옴
react react-native 하이브리드-앱 typescript expo
이수민
2025-10-10T14:17:45.287Z
댓글 1
좋아요 0
조회수 57
해결됨
프론트엔드 마스터클래스
그 전까지는 크게 불편함이 없었는데 이번 장에 위에 설명이 건너뛰기가 돼서 놓치게 되네요. 다양한 학습자료 제공에 miro형식 파일이라고 강의 소개에 적혀있긴한데, 따로 첨부파일이나 링크는 등록이 안돼있는것 같아서요.
javascript react 함수형-프로그래밍 객체지향 next.js
임영민
2025-10-10T13:43:57.230Z
댓글 2
좋아요 0
조회수 236
미해결
한 입 크기로 잘라먹는 Next.js
안녕하세요 예를 들어서 book 디렉토리 밑에 [id.tsx] 을 만들고 /book/10?id=test 이런 형태로 넘긴다면 router.query의 값은 어떤 형태로 저장이 되나요?
react typescript next.js 카카오공채-개발
qazwsxqaz
2025-10-10T12:51:36.307Z
댓글 3
좋아요 0
조회수 131
미해결
React Native with Expo: 제로초에게 제대로 배우기
혹시 ios나 android 네이티브 빌드해서 연동하는 방법도 해당 강의에서 진행하나요? 현재 25강을 듣고 있긴 한데... 들으면 들을수록 네이티브쪽도 건들어야하는 것 같아서 질문드립니다! 혹시나 해당 강의가 포함되어있으면 몇 강인지 말씀주실 수 있으신가요? 또... 스위프트, 코틀린 말고 자바나 오브젝티브씨도 같이 알아야하나요?
react react-native 하이브리드-앱 typescript expo
0S
2025-10-10T11:20:42.005Z
댓글 2
좋아요 0
조회수 79
미해결
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
안녕하세요, 현재 Vue 2.0을 사용하고 있으며, React로 이직을 하고자 해당 강사님의 강의를 수강하고있습니다. 혹시 현업에서도 해당 도구를 많이 사용하는지 빈도가 궁금합니다. Vue를 사용하면서는 그러지아니하다보니 이것을 알고있는게 좋은지 파악이 안된다보니 쌩뚱한 질문을 드려 죄송합니다.
javascript react node.js 카카오공채-개발
임스헝
2025-10-10T10:44:54.034Z
댓글 2
좋아요 0
조회수 85
미해결
React Native with Expo: 제로초에게 제대로 배우기
안녕하세요, 제로초님! 강의 잘 듣고 있습니다. 다름이 아니라 ImagePicker 로 카메라 사진 촬영 후 MediaLibrary 를 사용해서 갤러리에 저장할 때, 다음과 같은 에러가 발생합니다. 확인해보니 AUDIO 권한이 선언되지 않았다고 하는데, 아래와 같이 app.json 의 plugin 에 권한을 추가해도 동일한 에러가 발생합니다. { "expo": { // ... "plugins": [ // ... [ "expo-media-library", { "photosPermission": "Allow $(PRODUCT_NAME) to access your photos.", "savePhotosPermission": "Allow $(PRODUCT_NAME) to save photos.", "isAccessMediaLocationEnabled": true, "granularPermissions": ["audio", "photo"] } ] ], // ... } } 제로초님이 올려주신 코드를 그대로 복사 & 붙여넣기 해봐도 같은 문제가 발생하는데, 혹시 제가 놓친 부분이 있을까요...? 강의에서 다룬 부분의 코드와 package.json 첨부하겠습니다. import { FontAwesome, Ionicons } from '@expo/vector-icons'; import * as ImagePicker from 'expo-image-picker'; import * as Location from 'expo-location'; import * as MediaLibrary from 'expo-media-library'; import { useRouter } from 'expo-router'; import React, { useState } from 'react'; import { Alert, FlatList, Image, Linking, Pressable, StyleSheet, Text, TextInput, TouchableOpacity, View, } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; // ... export default function Modal() { // ... const canAddThread = (threads.at(-1)?.text.trim().length ?? 0) > 0 || (threads.at(-1)?.imageUris.length ?? 0) > 0; const canPost = threads.every( thread => thread.text.trim().length > 0 || thread.imageUris.length > 0, ); const removeThread = (id: string) => { setThreads(prevThreads => prevThreads.filter(thread => thread.id !== id), ); }; const pickImage = async (id: string) => { let { status } = await ImagePicker.requestMediaLibraryPermissionsAsync(); if (status !== 'granted') { Alert.alert( 'Permission not granted', 'Please grant camera roll permission to use this feature', [ { text: 'Open settings', onPress: () => { Linking.openSettings(); }, }, { text: 'Cancel', }, ], ); return; } let result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ['images', 'livePhotos', 'videos'], allowsMultipleSelection: true, selectionLimit: 5, }); console.log('image result:', result); if (result.canceled) return; setThreads(prevThreads => prevThreads.map(thread => thread.id === id ? { ...thread, imageUris: thread.imageUris.concat( result.assets?.map(asset => asset.uri) ?? [], ), } : thread, ), ); }; const takePhoto = async (id: string) => { let { status } = await ImagePicker.requestCameraPermissionsAsync(); if (status !== 'granted') { Alert.alert( 'Permission not granted', 'Please grant camera permission to use this feature', [ { text: 'Open settings', onPress: () => { Linking.openSettings(); }, }, { text: 'Cancel', }, ], ); return; } let result = await ImagePicker.launchCameraAsync({ mediaTypes: ['images', 'livePhotos', 'videos'], allowsMultipleSelection: true, selectionLimit: 5, }); console.log('camera result:', result); // MediaLibrary 권한 요청 및 사진 저장 status = (await MediaLibrary.requestPermissionsAsync()).status; if (status === 'granted' && result.assets?.[0].uri) { await MediaLibrary.saveToLibraryAsync(result.assets[0].uri); } if (result.canceled) return; setThreads(prevThreads => prevThreads.map(thread => thread.id === id ? { ...thread, imageUris: thread.imageUris.concat( result.assets?.map(asset => asset.uri) ?? [], ), } : thread, ), ); }; const removeImageFromThread = (id: string, uriToRemove: string) => { setThreads(prevThreads => prevThreads.map(thread => thread.id === id ? { ...thread, imageUris: thread.imageUris.filter( uri => uri !== uriToRemove, ), } : thread, ), ); }; // ... } { "name": "expo-threads-clone", "main": "expo-router/entry", "version": "1.0.0", "scripts": { "start": "expo start", "reset-project": "node ./scripts/reset-project.js", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", "lint": "expo lint" }, "dependencies": { "@expo/vector-icons": "^15.0.2", "@react-navigation/bottom-tabs": "^7.4.0", "@react-navigation/elements": "^2.6.3", "@react-navigation/native": "^7.1.8", "expo": "~54.0.12", "expo-blur": "~15.0.7", "expo-constants": "~18.0.9", "expo-dev-client": "~6.0.13", "expo-font": "~14.0.8", "expo-haptics": "~15.0.7", "expo-image": "~3.0.8", "expo-image-picker": "~17.0.8", "expo-linking": "~8.0.8", "expo-location": "~19.0.7", "expo-media-library": "~18.2.0", "expo-router": "~6.0.10", "expo-splash-screen": "~31.0.10", "expo-status-bar": "~3.0.8", "expo-symbols": "~1.0.7", "expo-system-ui": "~6.0.7", "expo-web-browser": "~15.0.8", "react": "19.1.0", "react-dom": "19.1.0", "react-native": "0.81.4", "react-native-gesture-handler": "~2.28.0", "react-native-reanimated": "~4.1.1", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", "react-native-web": "~0.21.0", "react-native-worklets": "0.5.1" }, "devDependencies": { "@types/react": "~19.1.0", "typescript": "~5.9.2", "eslint": "^9.25.0", "eslint-config-expo": "~10.0.0" }, "private": true }
react react-native 하이브리드-앱 typescript expo
Sckroll
2025-10-10T10:24:32.665Z
댓글 1
좋아요 0
조회수 124
미해결
Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
안녕하세요! 좋은 강의 만들어주셔서 감사합니다 🙂 수업을 순서대로 보고 있는데, 지난 시간에 살펴봤다는 에러 정의가 담겨 있는 영상이 무엇인지 궁금합니다..! 커리큘럼 상으로는 이전 영상이 라우팅 관련된 것이라서 에러 관련 내용이 없었거든요.
Lofo
2025-10-10T09:10:53.960Z
댓글 2
좋아요 0
조회수 91
미해결
한 입 크기로 잘라먹는 Next.js
안녕하세요 정환님! 강의 정말 잘 듣고 있습니다. 설명이 이해하기 쉽게 정리되어 있어 큰 도움이 되었습니다. 혹시 앞으로 Next.js를 활용한 실무 프로젝트나 자바스크립트 심화 개념을 다루는 강의도 제작하실 계획이 있으실까요?
sujin kim
2025-10-10T08:43:28.899Z
댓글 2
좋아요 0
조회수 52
미해결
실무에 바로 적용하는 스토리북과 UI 테스트
강의를 듣고 실무에 어떻게 적용해볼수 있을까 생각하다보니 궁금한 점들이 있어서 질문 남깁니다! 규모가 큰 기업들에서는 Storybook을 어떤 구조로 관리하고 있나요? 소규모 팀에서는 "프로젝트 내부 세팅 후 나중에 분리" vs "처음부터 모노레포" 중 뭐가 더 현실적일까요? (초기 비용 vs 장기 유지보수 고려)
react typescript tailwindcss storybook ui-testing
dydgus0421
2025-10-10T08:37:00.212Z
댓글 2
좋아요 0
조회수 101
미해결
손에 익는 Next.js - 블로그 만들기
5:53 부분에서 sitemap 에서 Promise가 필요하다 하셨는데 왜 필요한지 궁금합니다.
gmldnjs0402
2025-10-10T08:20:47.060Z
댓글 2
좋아요 0
조회수 94