티스토리 뷰
목차
제목을 쓸 때 해당 함수(패키지) 명을 써야 사람들이 들어오기 편할까,
해당 오브젝트가 하는 일을 적어야 들어오기 편할까?
으음... 내가 뭔가 모르는데 이러한 툴을 쓰고 싶어서 검색한다면
함수나 패키지 명보다는 하는 일을 적는게 더 편할 것 같긴 한데
갑자기 제목을 어떻게 써야 할지 고민됐다.
익숙했던 것을 돌아볼 수 있다는 건 좋은 일인 것 같다.
PropTypes
금액 데이터를 받았는데 숫자가 아닌 문자로 다른 자료형으로 되어있다.
그래서 계산식에서 에러가 떴는데 어디서 문제가 생겼는지 알려주는 것,
그것이 PropTypes의 용도이다.
코드
//App.js
import React from "react";
import PropTypes from 'prop-types';
function UserInfo({name, age, email, citizen}){
return(
<>
<h2>이름 : {name}</h2>
<h2>나이 : {age}</h2>
<h2>메일주소 : {email}</h2>
<h2>내국인 : {citizen ? ("true"):("false")}</h2>
</>
)
}
UserInfo.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired,
citizen: PropTypes.bool,
}
function App() {
return (
<UserInfo
name = {"Tom"}
age = {"twenty eight"}
email = {"abc@google.com"}
citizen = {false}
/>
);
}
export default App;
해석
//App.js
function App() {
return (
<UserInfo
name = {"Tom"}
age = {"twenty eight"}
email = {"abc@google.com"}
citizen = {false}
/>
);
}
export default App;
App 컴포넌트는
UserInfo 컴포넌트에
name age email citizen 4개의 데이터를 전해주고 있다.
//App.js
import React from "react";
import PropTypes from 'prop-types';
UserInfo.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired,
citizen: PropTypes.bool,
}
export default App;
이때
propTypes를 써서
UserInfo의 인자(prop) 자료형(types)를 지정해준다.
- name 문자
- age 숫자
- email 문자(필요)
- citizen 참/거짓(bool)
//App.js
function App() {
return (
<UserInfo
name = {"Tom"}
age = {"twenty eight"}
email = {"abc@google.com"}
citizen = {false}
/>
);
}
export default App;
그런데 App에서 넘겨주는 데이터중에서
age를 문자로 넘겨주었다.
그렇기에 console창에서 경고가 출력되었다.
라이브러리
예제 코드에선 자주 쓰이는 것만 간단하게 적었지만,
React 공식 홈페이지를 찾으면
해당 패키지의 모든 라이브러리를 알아볼 수 있다.
PropTypes와 함께 하는 타입 확인 – React
A JavaScript library for building user interfaces
ko.reactjs.org
매개변수 기본값 설정
defaultProps를 쓰면 매개변수 기본값을 설정해 줄 수 있다.
매개변수 초기화
목차 흐음... 일단 매개변수 초기화를 함으로써 어떤 장점이 있는지는 아직 잘 모르겠지만 알아둬서 나쁠 건 없다고 생각한다. 생각해보니 그렇다면 이건 도토리에 들어갈 내용이구만 Initialize fu
sirong.tistory.com
지난 포스트에 바로 해당 오브젝트에 적는 법도 있지만,
여러 스타일의 개발자가 있으니 이런 것도 있구나 하고 알아두는 게 좋다.
//App.js
import React from "react";
import PropTypes from 'prop-types';
function App() {
return (
<UserInfo/>
);
}
function UserInfo({name, age, email, citizen}){
return(
<>
<h2>이름 : {name}</h2>
<h2>나이 : {age}</h2>
<h2>메일주소 : {email}</h2>
<h2>내국인 : {citizen ? ("true"):("false")}</h2>
</>
)
}
UserInfo.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired,
citizen: PropTypes.bool,
}
UserInfo.defaultProps = {
name : 'Tom',
age : "twenty eight",
email : "abc@google.com",
citizen : false,
}
export default App;
defaultProps.를 통해 기본값을 지정해주었다.
에러 중첩 X
propTypes 경고가 여러개 있을 때 두 개 모두 알려주는 게 아니라,
앞에 것만 알려준다.
//App.js
import React from "react";
import PropTypes from 'prop-types';
function App() {
return (
<UserInfo/>
);
}
function UserInfo({name, age, email, citizen}){
return(
<>
<h2>이름 : {name}</h2>
<h2>나이 : {age}</h2>
<h2>메일주소 : {email}</h2>
<h2>내국인 : {citizen ? ("true"):("false")}</h2>
</>
)
}
UserInfo.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired,
citizen: PropTypes.bool,
}
UserInfo.defaultProps = {
name : 'Tom',
age : "twenty eight",
citizen : false,
}
export default App;
해당 코드에선
age에 문자를 넣고 / email 데이터를 안 넣어주었으니
2개의 warning이 떠야 하는데
앞에 것 하나만 뜬다.
//App.js
import React from "react";
import PropTypes from 'prop-types';
function App() {
return (
<UserInfo/>
);
}
function UserInfo({name, age, email, citizen}){
return(
<>
<h2>이름 : {name}</h2>
<h2>나이 : {age}</h2>
<h2>메일주소 : {email}</h2>
<h2>내국인 : {citizen ? ("true"):("false")}</h2>
</>
)
}
UserInfo.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired,
citizen: PropTypes.bool,
}
UserInfo.defaultProps = {
name : 'Tom',
age : 28,
citizen : false,
}
export default App;
앞에 warning 요소를 해결해주면
뒤에 warning요소가 뜬다.
큰 건 아니지만
warning 하나 떠서 하나만 고치고 바로 제출하거나 그러면 일이 커지니깐
한번 보고 지나가는 것도 좋다고 생각한다.
'웹개발(프론트) > React' 카테고리의 다른 글
And 연산자 (1) | 2021.05.12 |
---|---|
Redux-slice (0) | 2021.04.25 |
React cookie (0) | 2021.04.20 |
createElement 스타일 변경 (0) | 2021.04.18 |
styled components 심화편 (0) | 2021.04.17 |
- Total
- Today
- Yesterday
- CSS
- html
- 클릭
- usecookies
- Router
- Expo
- switch
- 쿠키
- react
- homebrew
- visualcode
- touchable
- Redux
- 서버
- 비동기
- 아이콘
- 랜더링
- SVG
- Hook
- 에러
- 웹접근성
- 접근성
- 무료아이콘
- useReducer
- nodejs
- async
- 가상샐렉터
- proptype
- 이쁜코드
- dom
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |