Develop 197

중첩된 Promise<Promise<T>>를 조심해!

async await 을 함수에서 리턴을 할 때 주의할 점이 있다. Bad 사례처럼, 이미 async가 붙은 함수에서는 리턴값 가장 바깥에 Promise가 붙기 때문에, 리턴값은 Promise가 붙으면 안된다. updateUserGoalVisible = async ( goalId: number, visible: boolean, ): Promise => { /* 👎 Bad 이미 async가 붙었기 때문에 리턴값은 순수한 Goal이어야 하는데, this.prisma.goal.update({}) 를 리턴함으로써 리턴값은 Promise이 되어버린다. 그래서 이 함수의 최종 리턴값은 Promise 이 되는 것이다. */ return this.prisma.goal.update({ where: { id: goalId..

Apollo Client query 시 주의점 (variables)

상황 query에 요구되는 variables가 있는데, 항상 같은 값으로 보내면 refetch되지 않는다. 같은 값으로 보냈던 이유: readQuery로 캐시 사용 위해 -> 캐시 사용을 포기하고 variables를 항상 다른 값으로 보낸다. 1️⃣ : 값이 항상 동일해서 refetch해도 query call 처리가 안된다? 2️⃣ : 값이 항상 달라지기 때문에 refetch하면 query call 처리가 잘 된다. 원인 1. apollo 라이브러리의 결함 또는 2. 프로젝트 내 apollo 설정 문제? (cache도 가끔 제대로 업데이트되지 않는데, 다른 프로젝트에서는 cache가 잘만 동작한다.) 어쨌든, 2️⃣로 하니까 해결됐음! const [query, { loading, data }] = use..

[Error] NDK at ~/Library/Android/sdk/ndk~~~~ did not have a source.properties file

react-native-vision-camera 라이브러리에서 요구하는 ndk가 깔려있지 않아도 yarn install 하면서 깔리는데, 만약 해당 ndk 가 로컬에서 꼬여있거나 손상되어 있으면 빌드에 문제를 줌. -> 해당 ndk 폴더 삭제하면 됨. [파인더 - cmd+shift+. 숨김 폴더 보기 - ~/root/라이브러리/Android/sdk/ndk/ - 문제있는 버전 폴더 삭제] 참고) https://stackoverflow.com/questions/64372383/ndk-at-library-android-sdk-ndk-bundle-did-not-have-a-source-properties-file

[iOS/Firebase/RN] iOS 개발자 계정 이전 이후 파이어베이스 푸시알람이 안올 때

배경 개발자 계정을 개인에서 법인으로 전환할 일이 생겨서 전환했는데, 그 이후 파이어베이스에서 보내는 푸시알람이 가지 않는 오류가 발생했습니다. 해결 APN 인증서를 재업로드하면 됩니다. 1. https://developer.apple.com/account/ 계정 - Certificates, Identifiers & Profiles - Keys - +버튼 클릭 - APN 선택 2. 다운로드 및 키 ID 인지 3. FIrebase console - 프로젝트 설정 - 일반 - ios 앱 - 팀 ID 변경 * 팀 ID는 developer 페이지 우상단에서 알 수 있습니다. 4. Firebase console - 프로젝트 설정 - 클라우드 메시징 - APN 인증키 삭제 후 다운로드 받은 파일로 재업로드 이 때 ..

[React Native] TextInput 부분 스타일 적용하는 방법

[따라해볼 예제] - Tick Tick 이라는 어플에서 TextInput에 해시태그와 제목의 스타일이 달라서 어떻게 구현하는지 궁금했다. - 그래서 따라해보기로 했다! [소스코드] ... import React, { useState } from 'react'; ... interface ValueInfo { str: string; isHT: boolean; idxArr: number[]; } const getValueInfos = (value: string): ValueInfo[] => { if (value.length === 0) { return []; } const splitedArr = value.split(" "); let idx = 0; const valueInfos: ValueInfo[] = s..

[React Native] v9 Facebook SDK 적용하기

최근 Facebook SDK를 9로 업데이트하라는 메일이 날라와서 업데이트를 해보려 한다! 환경 react-native: 0.63.4 react-native-fbsdk-next: 4.0.0 FB SDK 9 이상을 사용하려면 위 라이브러리를 사용해야 한다. 9 미만 버전을 사용하려면 react-native-fbsdk를 이용하면 된다. https://www.npmjs.com/package/react-native-fbsdk-next 설치 yarn add react-native-fbsdk-next yarn remove react-native-fbsdk // 이 라이브러리가 설치되어있다면. cd ios && pod install Configure projects 추가설명 참고 링크: https://github.c..

[React Native] Could not find "client" in the context or passed in as an option. Wrap the root component in an <ApolloProvider>, or pass an ApolloClient instance in via options.

분명 ApolloProvider에 client를 잘 넣었는데 이러한 오류가 발생할 때가 있다. 그럴 땐 useMutation(또는 useQuery or useLazyQuery)를 import 하는 패키지를 확인하자. import { gql, ApolloError, useMutation } from '@apollo/client'; // no!!!! import { useLazyQuery } from '@apollo/react-hooks'; import { gql, ApolloError } from '@apollo/client'; import { useLazyQuery, useMutation } from '@apollo/react-hooks'; // right!!!! useMutation은 @apollo/c..