웹, 앱 개발을 하다보면 포트, DB관련 정보, API_KEY
등.. 개발자 혼자서 또는 팀만 알아야 하는 값 즉, git, 오픈소스에 올리면 안되는 값들이 있다. 이때 필요한 것이 dotenv패키지이며 환경변수 파일을 외부에 만들어 URL, 포트, API_KEY
등..을 저장시켜 소스코드 내에 하드 코딩하지 않고 사용할 수 있다.
외부 파일(.env)에 환경번수를 정의하여 변수로 받아오는 이유는 보안과 유지보수에 용이하기 때문이다. .env파일은 프로젝트의 최상위 루트에 파일을 만들어 놓아야 한다.
REACT_APP_FIREBASE_API_KEY = API_KEY
REACT_APP_FIREBASE_AUTH_DOMAIN = AUTH_DOMAIN
REACT_APP_FIREBASE_PROJECT_ID = PROJECT_ID
REACT_APP_FIREBASE_STORAGE_BUCKET = STORAGE_BUCKET
REACT_APP_FIREBASE_MESSAGING_SENDER_ID = MESSAGING_SENDER_ID
REACT_APP_FIREBASE_MEASUREMENT_ID = MEASUREMENT_ID
REACT_APP_CLIENT_ID = CLIENT_ID
create-react-app
에서는 보안이 필요한 환경변수의 유출을 미연에 방지하기 위해 REACT_APP_
으로 시작되지 않는 환경변수는 무시하기 때문에 항상 변수명은 REACT_APP_
을 앞에 작성 . 후변수이름을 만들어 주어야 한다.
const firebaseConfig = {
apiKey: process.env.REACT_APP_FB_API_KEY,
authDomain: process.env.REACT_APP_FB_AUTH_DOMAIN,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_APP_ID
};
리액트는 라이브러리나 컴포넌트 사용 시 import를 하고 나서 사용을 할 수있지만, .env
에 등록된 변수는 별도의 import가 필요하지 않습니다. 전역 어디서든 process.env.
로 작성해둔 환경변수를 가져와서 사용하면 된다.
포커싱 처리하고자 하는 input element에 autoFoucus속성을 사용
<input type="text" autoFoucus />
Hook기반의 컴포넌트
const App = () => {
const inputFocus = useRef(null);
useEffect(() => {
inputFocus.current.focus();
}, []);
return (
<React.Fragment>
<input ref={inputFocus} />
</React.Fragment>
}
DOM에 직접 접근하는 방법보다 React에서 지원하는 ref
를 사용하는 것을 권장합니다.
만약, 동적으로 처리하지 않는다면 autoFocus
속성을 사용하면 됩니다.