inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

앱 빌드 문의드립니다.

해결됨

[2025] 비전공자도 가능한 React Native 앱 개발 마스터클래스

앱 빌드 중에 문제가 생겨 문의드립니다. 아래 알려주신 명령어를 입력하면 로컬이 아니라 expo.dev 사이트에서 앱이 빌드 되는 것을 확인 했습니다. 무료 계정 기준으로 빌드 시간이 30분~1시간 소요됩니다... npx eas build --platfo rm android --profile development 바쁘시겠지만 로컬에서 빌드하고 AVD에 설치하는 과정을 알려주시면 감사하겠습니다. 저와 같은 문제가 발생하시는 분들은 npm run android 또는 npm run ios 를 입력하시면 앱이 설치가 됩니다. 이게 정석인지는 잘 모르겠습니다..

  • javascript
  • react
  • node.js
  • react-native
  • typescript
권한준 댓글 3 좋아요 0 조회수 157

동물 앨범 만들기 최종 에러 수정부탁드립니다!

해결됨

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

현재 제가 동물 앨범 만들기 전체 파일 구조와 index.html 코드는 이렇게 작성하였으며, 강의 내용과 동일하게 작성하였습니다 api.js 코드와 TabBar.js 코드입니다. 강의 내용과 동일하게 작성하였습니다. content.js 코드와 index.js 코드를 작성하였습니다. 마지막으로 App.js 코드를 작성하였지만, 동물 사진이 웹 화면에 출력이 되지 않고 있습니다! import TabBar from "./components/TabBar.js"; import Content from "./components/Content.js"; import { request } from "./components/api.js"; export default function App($app) { this.state = { currentTab: window.location.pathname.replace("/", "") || "all", photos: [], }; //tabBar const tabBar = new TabBar({ $app, initialState: this.state.currentTab, onClick: async (name) => { history.pushState(null, null, `/${name}`); this.updateContent(name); }, }); //content const content = new Content({ $app, initialState: [], }); //state this.setState = (newState) => { this.state = newState; tabBar.setState(this.state.currentTab); content.setState(this.state.photos); }; this.updateContent = async (tabName) => { console.log(tabName); const name = tabName === "all" ? "" : tabName; const photos = await request(name); this.setState({ ...this.state, currentTab: tabName, photos: photos, }); }; window.addEventListener("popstate", () => { this.updateContent(window.location.pathname.replace("/", "") || "all"); }); const init = async () => { this.updateContent(this.state.currentTab); }; init(); }

  • javascript
  • rest-api
  • spa
  • dom
안연수 댓글 2 좋아요 0 조회수 106

Next의 route handler에 대한 질문이 있습니다.

미해결

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

안녕하세요 Next app router 관련해서 질문드립니다. 현재 사이드프로젝트에서 route handler를 적극활용하고 있는데요. 제가 인프라나 백엔드 관련 지식이 없다보니 좀 헷갈리는게 있습니다. 현재 저희 서비스에서 특정 API는 클라이언트 컴포넌트에서 route handler로 API 호출 -> route handler에서 외부 백엔드 API 호출 이런 형태로 사용되고 있는데요, 이때 실제로 route handler 서버가 아래의 사진 중 어느 형태로 운용되는 것인가요? 즉, Next 프로젝트를 배포했을 때 각 유저마다 route handler 서버가 할당되는 것인가요? 아니면 모든 유저의 요청을 오직 하나의 route handler서버에서 대응하는 것인가요? 아니면 이게 배포 환경에 따라 달라지는것인가요?

  • react
  • next.js
  • react-query
  • next-auth
  • msw
kraf 댓글 2 좋아요 0 조회수 122

동물앨범만들기 코드 에러문의드립니다!

해결됨

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

동물 앨범 만들기 3차 까지 들어서 라이브 코드를 작성하였지만, 강의 내용에서 나오는 웹 실행화면이 출력되지 않고 있습니다. 또한, 강사님의 깃 주소에 있는 코드들을 그대로 실행해도 강의 내용처럼 나오지 않습니다. 강사님이 동물 앨범 만들기 2차 때는 1차에서 작성한 각 동물들의 js파일과 html 파일을 삭제하라고 하셨는데, 막상 1차때 작성한 파일들을 삭제하니까 동물 사진이 웹에 출력되지 않아서 다시 기재하였습니다 그래서, 강사님의 깃 주소에는 1차와 2차, 3차 코드는 중복되게 작성하면 안되는 건가요? 강사님처럼 웹 화면에 출력될려면 3차 코드만 있으면 되는 건가요? 왜 3차 코드만으로 강의 내용처럼 출력이 안되는 걸까요? 1차, 2차, 3차의 모든 코드들을 융합해서 작성해야하나요? 다음 강의 node.js와 express.js를 진행할 수 가 없어서 급하게 문의드립니다! !

  • javascript
  • rest-api
  • spa
  • dom
안연수 댓글 1 좋아요 0 조회수 100

API 배포시 No HTTP triggers found. 이슈 발생

해결됨

Azure Native로 나만의 GPT 만들기

10:07:43 PM bh-mygpt-api-function: Zip package size: 5.59 kB 10:07:44 PM bh-mygpt-api-function: Fetching changes. 10:07:45 PM bh-mygpt-api-function: Cleaning up temp folders from previous zip deployments and extracting pushed zip file /tmp/zipdeploy/f322c28d-ce96-4124-9cb3-252f7c3879e2.zip (0.01 MB) to /tmp/zipdeploy/extracted 10:07:47 PM bh-mygpt-api-function: Updating submodules. 10:07:48 PM bh-mygpt-api-function: Preparing deployment for commit id '46352960-d'. 10:07:48 PM bh-mygpt-api-function: PreDeployment: context.CleanOutputPath False 10:07:48 PM bh-mygpt-api-function: PreDeployment: context.OutputPath /home/site/wwwroot 10:07:48 PM bh-mygpt-api-function: Repository path is /tmp/zipdeploy/extracted 10:07:48 PM bh-mygpt-api-function: Running oryx build... 10:07:48 PM bh-mygpt-api-function: Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.11 -p packagedir=.python_packages/lib/site-packages 10:07:49 PM bh-mygpt-api-function: Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx 10:07:49 PM bh-mygpt-api-function: You can report issues at https://github.com/Microsoft/Oryx/issues 10:07:49 PM bh-mygpt-api-function: Oryx Version: 0.2.20230210.1, Commit: a49c8f6b8abbe95b4356552c4c884dea7fd0d86e, ReleaseTagName: 20230210.1 10:07:49 PM bh-mygpt-api-function: Build Operation ID: 379fd46c502b6733 10:07:49 PM bh-mygpt-api-function: Repository Commit : 46352960-d49c-4dd9-8718-f017c28fb0aa 10:07:49 PM bh-mygpt-api-function: OS Type : bullseye 10:07:49 PM bh-mygpt-api-function: Image Type : githubactions 10:07:49 PM bh-mygpt-api-function: Detecting platforms... 10:08:00 PM bh-mygpt-api-function: Syncing triggers... 10:08:02 PM bh-mygpt-api-function: Querying triggers... 10:08:03 PM bh-mygpt-api-function: No HTTP triggers found. VS Code에서 API 배포시 No HTTP triggers found 가 뜨면서 배포가 제대로 안되는 것 같습니다. 저도 애져 포탈에서 함수 앱을 만들 때 스토리지 부분이 없었는데 다른 분들의 질문답변 내용을 참고해서 AzureWebJobsStorage 을 액세스 키로 채워줘도 해결되진 않았습니다 어디 부분이 문제일까요?? 그리고 코드 틀린 부분이 있는지 확인하고 다시 테스트를 해보려면 강의를 처음부터 다시 봐야하는데 완성된 코드 예제는 없을까요?

  • javascript
  • python
  • mongodb
  • azure
  • FastAPI
두루미 댓글 3 좋아요 0 조회수 157

학습 대상자 질문입니다

해결됨

Azure Native로 나만의 GPT 만들기

안녕하세요~ 먼저 좋은 강의를 무료로 공개해주셔서 감사드립니다 다름이 아니라 제 현재 수준이 기초CS나 백엔드 등의 지식이 전무하다보니 강의를 보면서 따라해보고는 있지만 무슨 내용인지 모른 상태로 따라쳐보고만 있고 이슈가 발생하면 막히면서 진행하는데 차질이 큰데 일단 몰라도 쭉 따라가는게 괜찮을까요?? 공부 방법을 어떻게 하면 좋을지 궁금하여 문의드립니다.

  • javascript
  • python
  • mongodb
  • azure
  • FastAPI
두루미 댓글 3 좋아요 0 조회수 146

들여쓰기 정리되는거 확장프로그램인가요?

해결됨

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

강의 보다보면 저장했을 때 들여쓰기가 다 정리되던데 단축키 인가요 확장프로그램인가요??

  • javascript
  • react
  • node.js
이지언 댓글 1 좋아요 0 조회수 123

prd 내용이 강의노트에 없습니다.

미해결

코딩 몰라도 OK! CursorAI로 시작하는 개발 생활 (웹/초급)

안녕하세요. 강의를 잘 듣고 있습니다. prd 자료가 강의 노트에 없습니다. 가능하면 citymir@naver.com으로 자료를 부탁드립니다.

  • react
  • 웹-디자인
  • firebase
  • no-code
  • cursor
  • vercel
nick jung 댓글 1 좋아요 0 조회수 93

useActionState에서 반환값 필드 생략 시 조건에 따라 에러 발생 여부가 다른 이유

해결됨

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요! 강의 잘 듣고 있습니다. 제가 혼자 실습하다가 createPostAction 의 반환값에 success 필드를 넣은 후에 useActionState 의 initialState 에도 이 필드를 아래와 같이 추가했었는데요, const [state, formAction, isPending] = useActionState(createPostAction, { message: '', errors: {}, formData: { title: '', tag: '', content: '', }, success: false, }); useActionState 훅을 사용할 때 initialState 에 포함된 필드 중 일부를 이후 action 함수의 반환값에서 생략하면 어떤 경우에는 에러가 발생하고, 어떤 경우에는 아무 문제 없이 동작하는 게 잘 이해가 되지 않아서요. 예를 들어 initialState 에는 success 필드가 있지만, 유효성 검사 실패 시 반환 객체에서 success 를 생략하면 에러가 발생합니다. if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors, message: 'Validation failed', formData: rawFormData, success: false, // 없으면 useActionState 에서 에러 발생 }; } 그런데 try...catch 문에서는 success 없이 반환하면 에러가 발생하지 않는 걸 확인할 수 있었습니다. try { const { title, tag, content } = validatedFields.data; await createPost({ title, tag, content }); revalidateTag('posts'); return { success: true, // 없어도 에러 안남 message: 'Post created successfully', }; } catch (e) { return { message: 'Failed to create post : ' + e, formData: rawFormData, }; } formData 필드도 비슷하게 행동하는데 이 차이가 왜 발생하는지, 어떤 기준으로 반환 객체의 필드 구조를 검사하고 에러를 발생시키는지 궁금합니다. useActionState 에서 반환 객체의 필드가 initialState 와 구조적으로 정확히 일치해야 하는 조건이 언제 적용되는 건가요?

  • react
  • next.js
e_sun 댓글 2 좋아요 0 조회수 105

Expo 패키지 혹은 React native 패키지를 사용하는 기준

미해결

React Native with Expo: 제로초에게 제대로 배우기

안녕하세요 Expo 패키지 혹은 React native 패키지를 사용하는 기준이 무엇인가요? 예를 들어 Image도 react native 패키지로도 가져올 수 있고 expo로도 가져올 수 있는데 강의에서는 expo를 사용하셨더라구요 혹시 그 이유를 알 수 있을가요?

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
YU NA Joe 댓글 1 좋아요 0 조회수 115

영상 보기 전에 직접 풀어봤습니다.

미해결

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

export default function solution(str) { let answer = ''; let l = 1; for (let i = 0; i < str.length; i++) { if (answer[answer.length - 1] !== str[i]) { if (l > 1) { answer += l + str[i]; l = 1; } else { answer += str[i]; } } else { l++; } if (i === str.length - 1 && l > 1) answer += l; } return answer; } 여러 경우에 대해서 대응은 되는거 같은데 괜찮은가요 ?

  • javascript
  • 코딩-테스트
류호이 댓글 1 좋아요 0 조회수 101

private component 관련 질문

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

루트 page.tsx에서 사용하는 컴포넌트는 pages/_components/ 여기에 바로 넣으셨는데 그럼 about 페이지에서만 사용하는 컴포넌트는 pages/_components/about/ 이 경로에 배치하면될까요?

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
김진규 댓글 2 좋아요 0 조회수 69

useNavigate 테스트 시, 검증 대상 질문입니다.

미해결

실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트

뒤로 이동 버튼을 눌러 페이지 전환이 잘 되었음을 검증하고 싶으면 history web api 등을 이용해서 검증하는게 더 올바르지 않나요?? 왜 useNavigate 의 반환 함수의 인자로 검증하는지 궁금합니다~

  • javascript
  • react
  • 소프트웨어-테스트
  • vitest
Einere 댓글 2 좋아요 0 조회수 147

강의교안 노션에 접속이 안되요

미해결

React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지

무한로딩 되면서 접속이 안되요 ㅠㅠ

  • react
  • React-Context
  • react-router
  • tailwindcss
  • react-query
skyileftgy12 댓글 2 좋아요 0 조회수 296

ErrorBoundary component 를 server component 에서 사용하는것

해결됨

Next.js 15로 완성하는 실전 YouTube 클론 개발

ErrorBoundary component ( react-error-boundary ) 는 client component 인데 수업에서는 server component 에서 사용하고 있는걸로 확인됩니다. 괜찮을까요?

  • react
  • postgresql
  • 클론코딩
  • next.js
  • tailwindcss
  • drizzle
hanbrang 댓글 2 좋아요 1 조회수 223

socialLoginSpa1703 스프링 실행 오류납니다.

미해결

스프링 부트와 리액트로 구현하는 소셜 로그인

socialLoginSpa1703 소스코드를 다운받고 인텔리제이로 프로젝트를 열었습니다. jdbc 설정대로 mysql을 생성하였고 bootRun으로 실행시키면 프로젝트는 실행됩니다. 강의와같이 localhost:8080 이 접속이 안되고 localhost 에 대한 액세스가 거부됨 이 페이지를 볼 수 있는 권한이 없습니다. HTTP ERROR 403 가 뜹니다. 확인 부탁드려요 2025-06-07T13:23:42.478+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : Starting SocialLoginSpa1703Application using Java 17.0.15 with PID 46412 (C:\Users\HP\Desktop\�Ǽ�ȣ\Project\SocialLoginSpa1703\build\classes\java\main started by HP in C:\Users\HP\Desktop\�Ǽ�ȣ\Project\SocialLoginSpa1703) 2025-06-07T13:23:42.483+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : No active profile set, falling back to 1 default profile: "default" 2025-06-07T13:23:42.566+09:00 INFO 46412 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable 2025-06-07T13:23:42.566+09:00 INFO 46412 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' 2025-06-07T13:23:44.141+09:00 INFO 46412 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-06-07T13:23:44.275+09:00 INFO 46412 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 119 ms. Found 2 JPA repository interfaces. 2025-06-07T13:23:45.451+09:00 INFO 46412 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2025-06-07T13:23:45.477+09:00 INFO 46412 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-06-07T13:23:45.478+09:00 INFO 46412 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.39] 2025-06-07T13:23:45.585+09:00 INFO 46412 --- [ restartedMain] o.a.c.c.C.[Tomcat].[ localhost ].[/] : Initializing Spring embedded WebApplicationContext 2025-06-07T13:23:45.587+09:00 INFO 46412 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3018 ms 2025-06-07T13:23:45.876+09:00 INFO 46412 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2025-06-07T13:23:46.037+09:00 INFO 46412 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final 2025-06-07T13:23:46.427+09:00 INFO 46412 --- [ restartedMain] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2025-06-07T13:23:47.214+09:00 INFO 46412 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2025-06-07T13:23:47.301+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-06-07T13:23:47.595+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@3419a5dd 2025-06-07T13:23:47.600+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2025-06-07T13:23:49.656+09:00 INFO 46412 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2025-06-07T13:23:49.824+09:00 INFO 46412 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-06-07T13:23:50.469+09:00 INFO 46412 --- [ restartedMain] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. 2025-06-07T13:23:51.243+09:00 WARN 46412 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open -in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open -in-view to disable this warning 2025-06-07T13:23:52.357+09:00 INFO 46412 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 2025-06-07T13:23:52.418+09:00 INFO 46412 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' 2025-06-07T13:23:52.428+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : Started SocialLoginSpa1703Application in 10.793 seconds (process running for 11.915) 2025-06-07T13:24:32.032+09:00 INFO 46412 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[ localhost ].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2025-06-07T13:24:32.032+09:00 INFO 46412 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2025-06-07T13:24:32.035+09:00 INFO 46412 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 2025-06-07T13:24:32.090+09:00 INFO 46412 --- [nio-8080-exec-2] c.e.d.security .JwtAuthenticationFilter : doFilterInternal

  • react
  • java
  • spring-boot
  • jpa
  • spring-security
뚜루뚜루 댓글 1 좋아요 0 조회수 182

탭 전환 안됨

미해결

React Native with Expo: 제로초에게 제대로 배우기

강의 잘 따라가다가 로그인까지 성공했는데 20강부터 갑자기 add,activity,user탭을 눌러도 전환이 안돼요.. home이랑 search만 전환이 됩니다. 에러도 안떠서 어디부터 잘못된건지 감이 안 오는데 어떤 파일을 확인해야 할까요? app/(tabs)_layout.tsx 입니다 import { Ionicons } from "@expo/vector-icons"; import { type BottomTabBarButtonProps } from "@react-navigation/bottom-tabs"; import { Tabs, useRouter } from "expo-router"; import { useContext, useRef, useState } from "react"; import { Animated, Modal, Pressable, Text, TouchableOpacity, View } from "react-native"; import { AuthContext } from "../_layout"; export default function TabLayout(){ const router=useRouter(); const [isLoginModalOpen,setIsLoginModalOpen]=useState(false); const {user}=useContext(AuthContext); const isLoggedIn = !!user; const openLoginModal=()=>{ setIsLoginModalOpen(true); }; const closeLoginModal=()=>{ setIsLoginModalOpen(false); }; const toLoginPage= ()=>{ setIsLoginModalOpen(false); router.push("/login"); } const AnimatedTabBarButton=({ children, onPress, style, ...restProps }: BottomTabBarButtonProps)=>{ const scaleValue=useRef(new Animated.Value(1)).current; const handlePressOut=()=>{ Animated.sequence([ Animated.spring(scaleValue,{ toValue:1.2, useNativeDriver:true, speed:200, }), Animated.spring(scaleValue,{ toValue:1, useNativeDriver:true, speed:200, }), ]).start(); } return ( <Pressable onPress={onPress} onPressOut={handlePressOut} style={[{ flex: 1, justifyContent: "center", alignItems: "center" }, style]} android_ripple={{ borderless: false, radius: 0 }} > <Animated.View style={{ transform: [{ scale: scaleValue }] }}> {children} </Animated.View> </Pressable> ); } return ( <> <Tabs backBehavior="history" screenOptions={{ headerShown:false, tabBarButton: (props)=><AnimatedTabBarButton {...props}/>, }} > <Tabs.Screen name="(home)" options={{ tabBarLabel:()=>null, tabBarIcon:({focused})=>( <Ionicons name="home" size={24} color={focused ? "black":"gray"}/> ), }} /> <Tabs.Screen name="search" options={{ tabBarLabel:()=>null, tabBarIcon:({focused})=>( <Ionicons name="search" size={24} color={focused ? "black":"gray"}/> ), }}/> <Tabs.Screen name="add" listeners={{ tabPress:(e)=>{ e.preventDefault(); if(!isLoggedIn){ openLoginModal(); } } }} options={{ tabBarLabel:()=>null, tabBarIcon:({focused})=>( <Ionicons name="add" size={24} color={focused ? "black":"gray"}/> ), }} /> <Tabs.Screen name="activity" listeners={{ tabPress:(e)=>{ e.preventDefault(); if(!isLoggedIn){ openLoginModal(); } }, }} options={{ tabBarLabel:()=>null, tabBarIcon:({focused})=>( <Ionicons name="heart-outline" size={24} color={focused ? "black":"gray"}/> ), }}/> <Tabs.Screen name="[username]" listeners={{ tabPress:(e)=>{ e.preventDefault(); if(!isLoggedIn){ openLoginModal(); } }, }} options={{ tabBarLabel:()=>null, tabBarIcon:({focused})=>( <Ionicons name="person-outline" size={24} color={focused ? "black":"gray"}/> ), }}/> <Tabs.Screen name="(post)/[username]/post/[postID]" options={{ href:null, }} /> </Tabs> <Modal visible={isLoginModalOpen} transparent={true} animationType="slide" > <View style={{ flex:1, justifyContent:"flex-end", backgroundColor:"rgba(0,0,0,0.5)" }}> <View style={{backgroundColor:"white",padding:20}}> <Pressable onPress={toLoginPage}> <Text>Login Modal</Text> </Pressable> <TouchableOpacity onPress={closeLoginModal}> <Ionicons name="close" size={24} color='#555'/> </TouchableOpacity> </View> </View> </Modal> </> ); }

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
khs1003k 댓글 2 좋아요 0 조회수 111

ios환경에서 어떻게 해야되는 지 모르겠어요

해결됨

React Native with Expo: 제로초에게 제대로 배우기

ios환경에서 어떻게 해야되는 지 알려주시면 감사하겠습니다.

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
rlazmfdl 댓글 2 좋아요 0 조회수 155

게시판 리스트 작성할 때 use client를 어디서부터 붙여야할지 모르겠어요

미해결

Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

<리스트> <레코드1/> <레코드2/> </리스트> 일 경우… 리스트단에서 use client로 한 후 zustand에서 리스트 자체를 통으로 관리해야하는가? 각각의 레코드에 use client를 한 후 데이터를 받으면 zustand에 리스트를 만들어 레코드별로 hash(Map)으로 등록해 관리해야하는가? 레코드에는 좋아요, 조회수 등이 표시됨. 제 생각은 1번은 SEO가 중요한건 각각 레코드 (상세페이지) 이므로 zustand에서 통으로 넣어 관리하면 되니 구현 및 데이터 신뢰도에서는 나아보이는데 하나바뀌면 전부 렌더링되니까 애매한거같고 2번은 서버에서 모두 다 가져와서 초기속도는 빠르고 seo에 좋으나 zustand에 통으로 못넣고 데이터 자체를 내가 직접관리하는 구조라 구현 및 데이터 신뢰 측면에서는 골치아플거같은데… 무엇이 일반적인 구현방식인지 모르겠습니다. 도와주세요 ㅠㅠ

  • react
  • typescript
  • next.js
0S 댓글 1 좋아요 0 조회수 108

인기 태그

인프런 TOP Writers

주간 인기글