2020년 01월 08일
HTML에서 세로 정렬은 다들 까다로워하는 부분입니다. vertical-align: middle;
으로 알고 사용하지만, 특정한 환경(Table 등)이 아니라면 세로 정렬이 되지 않는 문제 때문입니다.
이번 글에서는 CSS flex
와 align-items
를 사용하여 쉽게 세로정렬하는 방법을 알아봅니다.
<div class="login-page">
<div class="center">
<h3>Login</h3>
<form>
<input />
<input />
<input />
</form>
</div>
</div>
위 예제에서 로그인 페이지 내에 내용을 가로/세로 정렬을 진행합니다.
.login-page {
display: flex; // flex 사용
height: 100vh; // 세로 높이를 화면 크기에 맞춤
align-items: center; // 세로 정렬
justify-content: center; // 가운데 정렬( 아래서 추가 설명 )
margin: 0 auto; // 가운데 정렬
}
justify-content 속성은 flex-direction 속성의
진행 축
정렬에 영향을 받는데,flex-direction: row | row-reverse
인 경우x축 정렬
을 제어합니다.flex-direction: column | column-reverse
인 경우y축 정렬
을 제어합니다.
2020년 01월 08일
axios로 개발할 때, API마다 try ~ catch문을 적용하여 에러 처리를 진행해왔습니다. 이번 프로젝트에서는 Token을 관리하며, 서버에서 403에러가 오면 Token을 재발행해야하는 환경이라 더 나은 코드가 없을까 찾아보니 interceptors가 있었습니다. ## axios.interceptors axios.interceptors 함수를 통해 request, response를 감지할 수 있습니다. ```js // API 호출 전 해당 함수가 먼저 실행됩니다. axios.interceptors.request.use( (config) => { return config; }, (error) => { return Promise.reject(error); } ); // API 실행 후 response를 감지하여 데이터를 return 합니다. axios.interceptors.response.use( (response) => { return response; }, (error) => { return Promise.reject(error); } ); ``` 위 예제처럼 `interceptors.response`를 통하여 에러를 감지할 수 있게됩니다. 그러면 다시 response에 에러처리를 위해 코드를 작성합니다. ```js const _axios = axios.create({ baseURL: process.env.REACT_APP_API_URL, }); _axios.interceptors.response.use( (response) => response, (error) => { if (error.response && error.response.status === 403) { return Auth.refreshToken() // token 재발행 및 반환 .then((token) => { originalRequest.headers["Authorization"] = token; return _axios.request(error.config); // error.config(origin API 정보)를 다시 요청 }) .catch((error) => { window.location.href = "/login";...
2020년 01월 08일
# HTML ## Event 키보드 관련 이벤트 ( keyup ) ```js document.addEventListener("keyup", (event: KeyboardEvent) => { console.log(event.keyCode); }); ``` # React ## React.cloneElement ```ts type ReactText = string | number; type ReactChild = ReactElement | ReactText; ``` ```tsx return React.cloneElement(child as React.ReactElement, { width: this.props.width, height: this.props.height, }); ``` ## react-router-dom #### history ```tsx import { RouteComponentProps } from 'react-router-dom'; interface Props extends RouteComponentProps {} const Component : React.FC = ({ history }) => (); ```
2020년 01월 07일
스코프(Scope, 유효범위)에 대해서는 여러분들은 이미 사용하고 있을 것 입니다. 다만, 정확한 정의와 상세한 정보에 대해서 글을 통해 상세하게 알고 넘어가겠습니다. 스코프란? 특정한 변수(identifier)에 접근이 가능한가에 대한 규칙(범위)입니다. var x = "global scope"; function foo() { var x = "function scope"; console.log(x); } foo(); // function scope console.log(x); // global scope 위 예제에서 함수 foo 내 선언된 변수 x에 대해서는 foo 내에서만 참조가 가능하고 외부에서는 참조가 불가능하다. 이와같은 규칙들을 스코프라고 합니다. 스코프의 구분 스코프는 전역 스코프와 지역 스코프로 나눠집니다. 전역 스코프(Global Scope) 전역 변수(Global variable), 코드 어디에서든 참조할 수 있습니다. var로 선언한 전역 변수는 전역 객체(Global Object) window의 프로퍼티가 됩니다. 지역 스코프 (Local scope or Function-level scope) 지역 변수(Local variable), 지역(함수) 내에서 선언되어 함수 내에서 자신과 하위 함수에서만 참조 가능합니다. 자바스크립트 스코프 특징 자바스크립트는 함수 레벨 스코프(function-level scope)(함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효)를 따르고 있습니다. var x = 1; // 전역변수 (function () { var y...