목록프론트엔드 (45)
기술 블로그
테스트때는 모르지만 vercel과 같은곳에 배포해보면 스타일드 컴포넌트(이하 sc)의 딜레이 때문에 쌩 html이 보였다가 사라짐을 알 수 있다. 이러한 문제를 해결하기 위해 sc의 ssr 설정을 해줄 필요가 있다. 1 바벨 플러그인 sc 설치 npm i -D babel-plugin-styled-components 2 root 디렉토리에서 .babelrc 작성 { "presets": ["next/babel"], "plugins": [ [ "styled-components", { "ssr": true, "displayName": true, "preprocess": false } ] ] } 3 pages 디렉토리에 _document.js(tsx) 작성 import Document from 'next/docu..
useRoute를 사용했을 때 route.qurey가 바로 반환되는 것이 아닌 딜레이가 생겨 백으로 get 요청을 제대로 보내지 못할 때가 있다 useEffect는 router의 딜레이를 기다려주지 않기 때문에 결국 post/1 이 아닌 post/undefined 로 요청을 보내는 문제가 있었다. hooks는 컴포넌트 최상위에 위치해야해서 이펙트에 담을 수 없다 해결법은 router.isReady 메서드를 담을 변수를 만들어 로딩을 판별하고 useEffect의 두번째 인자로 위 로딩 감시 변수를 넣어 감시한다 아울러 jsx부분에서도 위와 같은 플레그를 활용하여 예외 처리한다.
키워드 : next.js, proxy , dynamic route (url) 프로젝트 중 위와 같이 동적 라우팅을 했을 때 적용이 되지 않고 403이 뜨는 이유가 있었다. 이유는 프록시 적용 때문이었으며 답은 공식문서에 나와있었다 다이나믹 라우팅을 프록시 주소가 아닌 프론트단 주소에 적용하고 싶다면 next.config.js 폴더 안에 rewrite 함수 리턴을 위와 같이 fallback을 명시하여 재작성 해주면 된다.
1. 최상위에서만 hooks를 호출할 수 있다. 반복문 중첩문안에서는 호출이 불가능핟. 2. React 컴포넌트 내에서만 호출이 가능하다.
import * as Location from 'expo-location' expo-location 전체를 Location 이름으로 가져온다 . bare에서는 추가 설정이 필요하다 const {status} = await Location.requestForegroundPermissionsAsync(); status 값은 성공시 'granted'로 넘어옵니다. 현 위치에 대한 정보를 얻고자 한다면 //현 위치 정보 얻기 const locationData = await Location.getCurrentPositionAsync(); const lati = locationData['coords']['latitude']; //위도 const long = locationData['coords']['longitud..
creatStackNavigaton()으로 반환받은 컴포넌트에 적용 가능한 속성들 - screenOptions: 스타일 관련 속성 cardStyle, headerStyle, headerTitleStyle, headerTitleAlign 등을 객체로 지정 - options:타이틀 명 등 관련 속성 headerTitle등을 객체로 지정
1. 전역 this global객체 (window)등을 가리킴 2.함수 내 this 함수의 주인인 객체에 바인딩 디폴트 바인딩이 없다면 window strict모드에서는 undefined 3.객체 내 함수(메서드)에서 this 함수의 주인인 객체를 가리킴 4.이밴트핸들러 안에서 this 이밴트를 받는 요소를 가리킴 5.함수가 생성자로서 쓰여질때 함수내 this new키워드로 함수를 불러오면 그 함수는 생성자 함수가 된다. this는 함수를 생성하는 객체로 바인딩 6.화살표 함수로 쓴 this (함수 안에서 사용하는데 window객체로 바인딩하기 싫을 때) 생성자 "함수내의 함수"의 this는 전역객체로 바인딩된다 화살표 함수 내의 this는 부모 함수나 클래스의 this를 바인딩한다. 7.명시적 바인딩을..
1.서명 키 생성 경로 : /andorid/app $ keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 그리고 기타 정보를 입력한다.(국가코드 kr) 2. gradle 변수 설정 경로: /android/gradle.properties MYAPP_RELEASE_STORE_FILE=my-upload-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=위에서 지정한 비밀번호 MYAPP_RELEASE_KEY_PASSWORD=위에서 지정한 비밀번호 경로 /androi..
state는 컴포넌트 내부에서 생성되고 값을 변경할 수 있다. import {a} from 경로 와 import a from 경로의 차이 전자는 export a; 했을 경우 후자는 export default(임의 변수명)를 하였고 import한 파일에서 변수명을 다시 정하고 싶을 때 전자의 경우 변수명을 변경하고 싶으면 import {b as a} from 경로 로 변경 가능 커스텀 버튼 컴포넌트 만들 시 onPress에 대한 prop설정 해줘야 함 alert(props.onPress())}> //여기 useState 사용 import React,{ useState } from 'react'; //임포트 const [count, setCount] = useState(0); 초기값 할당 및 상태관리 변수와..
3시간 씨름한 에러 결과를 정리하고자 한다. expo 초기 설정후 기기와 expo를 연결하려니 (expo 종료상태라 어둡다.) lan 연결이 127.0.0.1로 잡히는 문제가 있었다 최신 버전 expo에서 발생하는 문제같은데 자세한 원인은 모른다. tunnel로 연결하면 되긴하나 랜이 아닌 외부망을 이용하기에 속도가 느리고 원하는 해결책이 아니다. 찾은 해결방법은 환경변수를 변경하는법 명령 프롬프트 system32 폴더 내에서 ipconfig로 ipv4 주소를 찾아 복사한뒤 프로젝트 폴더로 이동 후 아래 명령어를 입력한다 set REACT_NATIVE_PACKAGER_HOSTNAME=ip //ip= your lan ipv4 그 후 node.js 재실행