묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
애플 로그인 관련 질문입니다.
계정 버튼을 누르고 클릭했을 떄, 강사님 처럼 인증서 부분이 뜨지 않는데, 멤버십을 구입해야지 가능한것일까요?
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
pgadmin 서버 생성 에러
pgAdmin 서버 생성이 아래 첨부한 이미지에서 나오는 에러메세지가 나오면서 되지 않아요..whoami 를 입력하면 나오는 USER를 Username으로 설정하고 비밀번호를 postgres 로하면 아래와 같은 에러가 발생하고username 을 postgres 로 하고 비밀번호를 postgreSQL을 처음 받을때 제가 설정한 슈퍼유저 비밀번호로 하면 생성이 됩니다..window 운영체제에서 진행하고 있습니다.
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
카카오 주소 검색 기능 401 에러
LOG a {"latitude": 37.550165, "longitude": 127.12752} LOG [AxiosError: Request failed with status code 401강의영상 잘 따라하고, REST API KEY까지 제대로 입력했는데, 위와 같은 에러가 발생합니다.import React from 'react'; import {StyleSheet, TextInput, TextInputProps, View} from 'react-native'; import Ionicons from 'react-native-vector-icons/Ionicons'; import {colors} from '@/constants'; interface SearchInputProps extends TextInputProps { onSubmit: () => void; } function SearchInput({onSubmit, ...props}: SearchInputProps) { return ( <View style={styles.container}> <TextInput style={styles.input} autoCapitalize="none" placeholderTextColor={colors.GRAY_500} returnKeyType="search" onSubmitEditing={onSubmit} clearButtonMode="while-editing" {...props} /> <Ionicons name={'search'} color={colors.GRAY_700} size={20} onPress={onSubmit} /> </View> ); } const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', borderWidth: 1, borderColor: colors.GRAY_200, paddingVertical: 8, paddingHorizontal: 10, borderRadius: 5, }, input: { flex: 1, fontSize: 16, paddingVertical: 0, paddingLeft: 0, color: colors.BLACK, }, }); export default SearchInput; import axios from 'axios'; import {useEffect, useState} from 'react'; import Config from 'react-native-config'; import {LatLng} from 'react-native-maps'; type Meta = { total_count: number; pageable_count: number; is_end: boolean; same_name: { region: string[]; keyword: string; selected_region: string; }; }; export type RegionInfo = { address_name: string; category_group_code: string; category_group_name: string; category_name: string; distance: string; id: string; phone: string; place_name: string; place_url: string; road_address_name: string; x: string; y: string; }; type RegionResponse = { meta: Meta; documents: RegionInfo[]; }; function useSearchLocation(keyword: string, location: LatLng) { const [regionInfo, setRegionInfo] = useState<RegionInfo[]>([]); const [pageParam, setPageParam] = useState(1); console.log(keyword, location); useEffect(() => { (async () => { try { const {data} = await axios.get( `https://dapi.kakao.com/v2/local/search/address.json?query=${keyword}&y=${location.latitude}&x=${location.longitude}&page=${pageParam}`, { headers: { Authorization: `KakaoAK ${Config.KAKAO_REST_API_KEY}`, }, }, ); console.log('data', data); } catch (error) { console.log(error); } })(); }, [keyword, location]); return {regionInfo}; } export default useSearchLocation; GOOGLE_API_KEY=키내용들 KAKAO_REST_API_KEY=키내용들 어떤 부분이 잘못되어서 401 에러가 발생하는지 알고싶습니다.
-
미해결핸즈온 리액트 네이티브
SDK 51 관련 추가 질문입니다.
이번 expoSDK51 업데이트 이후 생긴 오류인데 Image 컴포넌트 관련해서 발생한 문제입니다No suitable URL request handler found for ph://1285DF11-FA85-4AAF-A07D-84106A17889F/L0/001 이라고 에러가 발생했습니다. 검색해보니 SDK43때도 이런 에러가 발생한것 같습니다Image 컴포넌트를 사용하여 이미지를 랜더링했었는데 iOS에서 이미지가 랜더링 되지 않는 문제가 발생했습니다. 이건 라이브러리가 문제인지 아니면 해결 방법이 있는건지 감이 안잡혀서 질문드립니다.마감 1주일 전인데 좀 이런일이 생겨서 물어볼곳이 강사님 뿐입니다 ㅠ
-
미해결배달앱 클론코딩 [with React Native]
xcode 빌드 시 Command PhaseScriptExecution failed with a nonzero exit code 에러가 나옵니다
안녕하세요 제로초님 안드로이드는 시뮬레이터에서 돌아가는 것 보고 iOS도 해보고 있는 중입니다.그런데 계속 Command PhaseScriptExecution failed with a nonzero exit code 나오면서 빌드가 실패하네요 https://github.com/facebook/react-native/issues/36762https://stackoverflow.com/questions/75975043/xcode-error-phasescriptexecution-failed-with-a-nonzero-exit-code 위의 게시물들을 참고해서 수정도 해봤고 node_modules를 지우고 다시 설치도 해봤습니다. pod deintegrate와 캐시를 지운 후에 다시 pod install도 해줬습니다. 그래도 지속적으로 문제가 해결되지 않았습니다. 지금 애플 디벨로퍼에서 인증서들은 모두 발급 받고 Xcode에도 제 계정이 연결되어 있습니다. 하나 걸리는 건 react-native 버전이 0.74.0 인데 이 부분이 문제가 될 수도 있을까요?"react-native": "0.74.0" 혼자 해결해 보려고 했는데 도저히 답이 나오지 않아서 질문 드립니다. 늘 질문 받아주셔서 감사합니다
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
캐싱관련 질문있습니다.
❗질문 작성시 꼭 참고해주세요최대한 상세히 현재 문제(또는 에러)와 코드(또는 github)를 첨부해주셔야 그만큼 자세히 답변드릴 수 있습니다.맥/윈도우, 안드로이드/iOS, 버전 등의 개발환경도 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요!안녕하세요 저는 현재 웹으로 다른걸 개발하고 있는데, react-query로 auth를 개발하신거 참고하려고 강의내용을 따라가던중 버그같은게 있어서 질문드립니다. 저는isLoggedIn 상태를 이런식으로 설정해보았는데요.const isLoggedIn = refreshTokenQuery.isSuccess; 예를 들어 제가 프로필 페이지에 있는데isLoggedIn ? 개인프로필 내용 보여주기 : 로그인 버튼만 보여주기인데요.저는 로그인을 oauth 로그인만 구현해둔 상태입니다(google,kakao,naver)예를들어 제 프로필페이지 isLoggedIn가 false인 상태이니 "로그인하세요" 버튼이 보일 것이고 클릭하면 bottom sheet로 올라오고 카카오 로그인 버튼을 누르면 카카오의 약관동의화면이나 아이디,비밀번호입력하는 페이지가 렌더링되겠죠그 페이지에서 브라우저 뒤로가기버튼을 클릭하여 다시 프로필페이지로 이동하면 useGetRefreshToken을 타면서 getAccessToken함수가 호출되고 디스크 캐시로 부터 받아온 data를 가져와 isSuccess 상태가 되어버리면서 isLoggedIn은 true인 상태가 되어버리고 프로필페이지 접근 인가가 되어버립니다.구글링해보니 백포워드 캐시때문에 그렇다고 하는데, 해결방안이 GetAccessToken api header에 Cache-control:no-store옵션을 주면 cache를 거부하게 만드는 방법이 있더라구요.(근데 저같은경우는 이런 옵션을 주면 getAccessToken api가 호출이 안되더라구요..) 근데 의문점은 로그아웃하면서 'auth'에 해당하는 캐싱된 쿼리들을 무효화 시켰을텐데 캐싱된 데이터를 가져온다는게 좀 이해가 안됩니다. queryclient.removequeries 도 안되더라구요.
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
CRUD에서 CR만 배우는건가요
수정 삭제는 sqlite로 직접 만져야되나요
-
미해결배달앱 클론코딩 [with React Native]
그래들 설정 부분이 궁금합니다.
강의 내용과 실제 파이어베이스 페이지에 가보니 설정하는 부분이 달라져서 아래와 같이 넣는게 맞을 것 같다고 생각해서 넣었는데 맞는지 모르겠네요아래는 파이어베이스에서 설정하라고 하는 부분이고.아래는 소스에서 적용한 부분입니다.build.gradle 부분에서buildscript { ..... dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") // 추가부분 classpath('com.google.gms.google-services' version '4.4.1' apply false) } } .... app/build.gradle부분에서dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") // 추가된 부분 implementation('com.android.application') // 추가된 부분 implementation('com.google.gms.google-services') // 추가된 부분 implementation platform('com.google.firebase:firebase-bom:33.0.0') // 추가된 부분 implementation 'com.google.firebase:firebase-analytics' if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } ... // 추가 apply plugin: 'com.google.gms.google-services'
-
미해결핸즈온 리액트 네이티브
expo SDK51 관련 질문입니다.
안녕하세요 강사님의 수업 중에 처음 배우는 리액트 네이티브, 핸즈온 리액트 네이티브 둘 다 결제해서 수강한 학생입니다. 덕분에 순조롭게 졸업작품을 완성해가고있습니다. 오늘 expo 관련해서 SDK51 버전 업데이트가 있었는데 defaultProps관련해서 에러가 발생했는데 해결 방법을 찾질 못해서 부득이 하게 질문 올립니다. defaultProps가 지원을 중단할테니 JavaScript default parameters를 사용하라고 에러가 떴습니다. 커스텀 컴포넌트는 수정을 하면 되는데 처음 배우는 리액트 네이티브에서 사용하셨던 gitfed-chat에서 avartar관련해서도 이 에러가 발생해서 해결방법을 문의하고자 질문을 올립니다. ERROR Warning: Avatar: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
ios 빌드 에러! 안드는 정상 동작
Data/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build export TEMP_DIR\=/Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build export TEMP_FILES_DIR\=/Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build export TEMP_FILE_DIR\=/Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build export TEMP_ROOT\=/Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex export TEST_FRAMEWORK_SEARCH_PATHS\=\ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks\ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator17.4.sdk/Developer/Library/Frameworks export TEST_LIBRARY_SEARCH_PATHS\=\ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib export TOOLCHAINS\=com.apple.dt.toolchain.XcodeDefault export TOOLCHAIN_DIR\=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain export TREAT_MISSING_BASELINES_AS_TEST_FAILURES\=NO export UID\=501 export UNINSTALLED_PRODUCTS_DIR\=/Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/UninstalledProducts export UNSTRIPPED_PRODUCT\=NO export USER\=kim-yongmin export USER_APPS_DIR\=/Users/kim-yongmin/Applications export USER_LIBRARY_DIR\=/Users/kim-yongmin/Library export USE_DYNAMIC_NO_PIC\=YES export USE_HEADERMAP\=YES export USE_HEADER_SYMLINKS\=NO export USE_HERMES\=true export USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES\=YES export VALIDATE_DEVELOPMENT_ASSET_PATHS\=YES_ERROR export VALIDATE_PRODUCT\=NO export VALID_ARCHS\=arm64\ arm64e\ i386\ x86_64 export VERBOSE_PBXCP\=NO export VERSION_INFO_BUILDER\=kim-yongmin export VERSION_INFO_FILE\=React-Codegen_vers.c export VERSION_INFO_STRING\=\"@\(\#\)PROGRAM:React-Codegen\ \ PROJECT:Pods-\" export WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES\=NO export XCODE_APP_SUPPORT_DIR\=/Applications/Xcode.app/Contents/Developer/Library/Xcode export XCODE_PRODUCT_BUILD_VERSION\=15E204a export XCODE_VERSION_ACTUAL\=1530 export XCODE_VERSION_MAJOR\=1500 export XCODE_VERSION_MINOR\=1530 export XPCSERVICES_FOLDER_PATH\=/XPCServices export YACC\=yacc export arch\=undefined_arch export variant\=normal /bin/sh -c /Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build/Script-46EB2E00012AD0.sh /bin/sh: /Users/kim-yongmin/Desktop/RN: No such file or directory Command PhaseScriptExecution failed with a nonzero exit code warning: Run script build phase '[CP-User] [Hermes] Replace Hermes for the right configuration, if needed' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'hermes-engine' from project 'Pods') warning: Run script build phase 'Bundle React Native code and images' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'meltingpot' from project 'meltingpot') warning: Run script build phase '[CP-User] [RN]Check rncore' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-Fabric' from project 'Pods') --- xcodebuild: WARNING: Using the first of multiple matching destinations: { platform:iOS Simulator, id:6467FA54-9230-43CA-9818-9D9D12368E26, OS:17.4, name:iPhone 15 } { platform:iOS Simulator, id:6467FA54-9230-43CA-9818-9D9D12368E26, OS:17.4, name:iPhone 15 } ** BUILD FAILED ** The following build commands failed: PhaseScriptExecution [CP-User]\ Generate\ Specs /Users/kim-yongmin/Library/Developer/Xcode/DerivedData/meltingpot-gquvlbyucsuermbjkfmfldzpeszt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build/Script-46EB2E00012AD0.sh (in target 'React-Codegen' from project 'Pods') (1 failure)이런 에러가 발생하면서, 안드는 정상 동작하지만 ios는 정상 동작하지 않습니다. 해결 방법을 열심히 찾아봤는데 잘 모르겠습니다...!!
-
미해결따라하며 배우는 리액트 네이티브 기초
앱 구조에 대해서
혹시 expo를 설치를 했는데 구조가 너무 달라서 질문드립니다! app.js 파일도 없고 component hooks script폴더들이 있는데 어떤식으로 사용이되는 파일인지 모르겠습니다
-
미해결배달앱 클론코딩 [with React Native]
.env는 iOS에서는 따로 설정할 부분이 없는걸까요?
안드로이드와 아이폰 기기의 주소가 달라서 .env파일에서ANDROID_API_URL=http://10.0.2.2:3105 IOS_API_URL=http://localhost:3105이런식으로 사용을 할려고 합니다.그리고 SignUp 파일에서 아래와 같이 플랫폼에 맞게 주소를 불러오게 하려고 하는데 const response = await axios.post( Platform.OS === 'ios' ? `${Config.IOS_API_URL}/user` : `${Config.ANDROID_API_URL}/user`, { email, name, password, }, );iOS는 설정할 부분에 대한 설명이 따로 없어서 테스트를 하는데 .env를 사용하지 않고 바로 주소를 입력했을때는 정상적으로 호출이 되는데 .env를 사용하면 undefined로 나옵니다.검색을 해 보니https://velog.io/@attosisss_/ios-%ED%99%98%EA%B2%BD-%EB%B3%80%EC%88%98-%EC%84%A4%EC%A0%95이런식으로 하면 될 것 같은데. 잘못 손을대면 문제가 커질것 같아서 조금 고민이기는 합니다.위 링크대로 xCode를 수정하면 문제가 없는지 궁금합니다.
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
리액트 네이티브 스타일 라이브러리 사용에 대한 궁금증입니다.
일반적인 웹 개발의 경우, module css, tailwind css, styled-components, emotion, style-x, module css 등 정말 다양한 대체안들이 많은것으로 알고 있습니다.리액트 네이티브도, tailwind css나, styled-components, emotion을 사용할 수 있는 것으로 알고 있는데, 현업이나 다양한 프로젝트에서도, react-native에서 제공해주는 style-sheet를 사용하는 편인가요? 보통 리액트에서, 스타일을 적용할 떄 일반적인 컴포넌트 코드와, 스타일 코드를 따로 분리해서 적용시켜주는 방식을 많이 쓰곤하는데, 리액트 네이티브는 이렇게 한 파일에 사용하는 방법밖에 없는지 이 부분도 궁금합니다!
-
미해결배달앱 클론코딩 [with React Native]
API 연결이 안됩니다.
.env 설정을 아래 3가지로 해 보고, 이것도 안되서 실제 아이피로 해 봤는데도 애뮬레이터 아래 undefined라는 오류 메시지만 뜨네요; API_URL = http://192.168.0.255:3105 API_URL = http://10.0.2.2:3105 ; API_URL = http://localhost:3105 SignUp.tsx 는 아래와 같이 되어 있습니다.try { setLoading(true); const response = await axios.post(`${Config.API_URL}/user`, { email, name, password, }); console.log(response); Alert.alert('알림', '회원가입이 완료되었습니다.'); } catch (error) { const errorResponse = (error as AxiosError).response; console.error(errorResponse); if (errorResponse) { Alert.alert('알림', errorResponse.data.message); } } finally { setLoading(false); }해당 패키지도 모두 설치하고, 서버도 재시작하고 했는데도 안되네요.포트스맨으로 http://localhost:3105로 post 요청을 해 보면 아래와 같은 오류가 뜹니다.TypeError: Cannot read properties of undefined (reading 'toLowerCase') at /Users/xxx/React-Project/React-Native/back/app.js:104:27 at Layer.handle [as handle_request] (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/layer.js:95:5) at next (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/layer.js:95:5) at /Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/index.js:281:22 at Function.process_params (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/index.js:341:12) at next (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/index.js:275:10) at urlencodedParser (/Users/xxx/React-Project/React-Native/back/node_modules/body-parser/lib/types/urlencoded.js:100:7) at Layer.handle [as handle_request] (/Users/xxx/React-Project/React-Native/back/node_modules/express/lib/router/layer.js:95:5) POST /user 500 7.179 ms - 2
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
영상 재생은 되는데 영상이 안보입니다
코드 버그는 아닌데 인프런 문제인지 갑자기 선생님 강의 영상은 안보이고 재생만 됩니다.. MAC OS (Chrome,Safari 둘다 영상이 안보여요)
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
useEffect 의존성 질문
장소 등록 후 MapHomeScreen으로 돌아가는 코드입니다.useEffect의 의존성 배열이 없이 사용하셨는데어떤 이유가 있으신가요?!빈 배열이나, 의존성을 안 넣으신 이유가 궁금합니다.
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
@react-navigation/drawer 접근 에러
강의에서 알려주신대로 babel.config.js 에 plugins: ['react-native-reanimated/plugin'], 추가.npx react-native start --reset-cache했지만 에러가 발생합니다.에러는 node_modules에 @react-navigation/drawer 를 못찾는다고 하는데 왼쪽 디렉토리 보시면 해당 폴더는 있습니다.방법이 있을까요?
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
회원가입 버튼 클릭 시 아무런 반응이 없습니다..
강사님..제가 어딘가 빠트린 부분이 있는 것 같은데.. 에러도 안나서 도저히 못찾고 있습니다..ㅠㅠ백엔드와 postgresql 서버 모두 실행중입니다..이런 경우 오류를 확인할 수 있는 꿀팁 같은게 있을까요?!혹시 몰라서 깃헙 공유드립니다..https://github.com/KMSKang/react
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
marker.d.ts 에러 문제
import {LatLng, MapMarkerProps} from 'react-native-maps'; // marker props의 타입을 변경 declare module 'react-native-maps' { export interface MyMapMarkerProps extends MapMarkerProps { coordinate?: LatLng; } } Interface 'MyMapMarkerProps' incorrectly extends interface 'MapMarkerProps'.Type 'MyMapMarkerProps' is not assignable to type '{ anchor?: Point | undefined; calloutAnchor?: Point | undefined; calloutOffset?: Point | undefined; centerOffset?: Point | undefined; coordinate: LatLng; ... 22 more ...; zIndex?: number | undefined; }'.Types of property 'coordinate' are incompatible.Type 'LatLng | undefined' is not assignable to type 'LatLng'.Type 'undefined' is not assignable to type 'LatLng'.ts(2430)이런 에러가 발생합니다. 강의와 동일하게 했는데 그렇습니다! 아래 질문주신분 답변에 응답이 없어서 다시 질문드리는 점 양해부탁드립니다!
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
react-native-vector-icons 에러 관련 질문
import React, {useRef, useState} from 'react'; import {Alert, Pressable, StyleSheet, View} from 'react-native'; import MapView, { Callout, LatLng, LongPressEvent, Marker, PROVIDER_GOOGLE, } from 'react-native-maps'; import {useSafeAreaInsets} from 'react-native-safe-area-context'; import Ionicons from 'react-native-vector-icons/Ionicons'; import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; import {StackNavigationProp} from '@react-navigation/stack'; import {alerts, colors, mapNavigations} from '@/constants'; import {CompositeNavigationProp, useNavigation} from '@react-navigation/native'; import {DrawerNavigationProp} from '@react-navigation/drawer'; import {MainDrawerParamList} from '@/navigations/drawer/MainDrawerNavigator'; import {MapStackParamList} from '@/navigations/stack/MapStackNavigator'; import useUserLocation from '@/hooks/useUserLocation'; import usePermission from '@/hooks/usePermission'; import mapStyle from '@/style/mapStyle'; import CustomMarker from '@/components/CustomMarker'; type Navigation = CompositeNavigationProp< StackNavigationProp<MapStackParamList>, DrawerNavigationProp<MainDrawerParamList> >; const MapHomeScreen = () => { const inset = useSafeAreaInsets(); const navigation = useNavigation<Navigation>(); const mapRef = useRef<MapView | null>(null); const {userLocation, isUserLocationError} = useUserLocation(); const [selectLocation, setSelectLocation] = useState<LatLng | null>(); usePermission('LOCATION'); const handleLongPressMapView = ({nativeEvent}: LongPressEvent) => { setSelectLocation(nativeEvent.coordinate); }; const handlePressAddPost = () => { // if (!selectLocation) { return Alert.alert( alerts.NOT_SELECTED_LOCATION.TITLE, alerts.NOT_SELECTED_LOCATION.DESCRIPTION, ); } navigation.navigate(mapNavigations.ADD_POST, { location: selectLocation, }); // 다시 뒤로 돌아왔을때는 위치를 초기화 setSelectLocation(null); }; const handlePressUserLocation = () => { if (isUserLocationError) { // 에러 메시지 표시 return; } mapRef.current?.animateToRegion({ latitude: userLocation.latitude, longitude: userLocation.longitude, latitudeDelta: 0.0922, longitudeDelta: 0.0421, }); }; // 1. 나의 위치 구하고. (geolocation) // 2. 지도를 그곳으로 이동. return ( <> <MapView ref={mapRef} style={styles.container} provider={PROVIDER_GOOGLE} showsUserLocation followsUserLocation showsMyLocationButton={false} customMapStyle={mapStyle} onLongPress={handleLongPressMapView}> <CustomMarker color="RED" score={3} coordinate={{ latitude: 37.52016541, longitude: 127.127520372, }} /> <CustomMarker color="BLUE" coordinate={{ latitude: 37.550165411, longitude: 127.127520372, }} /> {selectLocation && ( <Callout> <Marker coordinate={selectLocation} /> </Callout> )} </MapView> <Pressable style={[styles.drawerButton, {top: inset.top || 20}]} onPress={() => navigation.openDrawer()}> <Ionicons name="menu" color={colors.WHITE} size={25} /> </Pressable> <View style={styles.buttonList}> <Pressable style={styles.mapButton} onPress={handlePressAddPost}> <MaterialIcons name="add" color={colors.WHITE} size={25} /> </Pressable> <Pressable style={styles.mapButton} onPress={handlePressUserLocation}> <MaterialIcons name="my-location" color={colors.WHITE} size={25} /> </Pressable> </View> </> ); }; const styles = StyleSheet.create({ container: { flex: 1, }, drawerButton: { position: 'absolute', left: 0, top: 20, paddingVertical: 10, paddingHorizontal: 12, backgroundColor: colors.PINK_700, borderTopRightRadius: 50, borderBottomRightRadius: 40, shadowColor: colors.BLACK, shadowOffset: {width: 1, height: 1}, shadowOpacity: 0.5, // 안드는 elevation elevation: 4, }, buttonList: { position: 'absolute', bottom: 30, right: 15, }, mapButton: { backgroundColor: colors.PINK_700, marginVertical: 5, height: 48, width: 48, alignItems: 'center', justifyContent: 'center', borderRadius: 30, shadowColor: colors.BLACK, shadowOffset: {width: 1, height: 2}, shadowOpacity: 0.5, elevation: 2, }, }); export default MapHomeScreen; 제대로 import도 한 것 같고, 실제로 안드로이드에서는 아이콘 이모지가 매우 정상적으로 보이는데 ios에서만 아이콘이 다르게 보이거나, 아예 안뜹니다. drawer 이모지도 동일하게 동작합니다. 혹시 어떻게 해결하는지에 대해 알고싶습니다! cache clean도 진행해보았습니다!!!