React페이지 안에서 전역변수 사용할 일이 거의 없다.
React Class형에서는 라이프사이클에 대한 이해가 필요하다.
참고
constructor -> render -> componentDidMount -> | componentDidUpdate -> render
componentDidMount : 마운트되면 React에서 호출
✨ React에서는 DOM 조작을 적게하는 것이 중요하다.
: 코드 구현을 하다 필요한 기능을 구현하기 위해 가져와 쓰는 것
라이브러리를 사용한다는 것은, 그 라이브러리를 주기적으로 followup 하고 이슈를 확인해야한다. 따라서 라이브러리 사용은 사실 최소화 하는것이 좋다.
url에는 의미없는 정보가 들어가지 않는다. 사용자가 알 수 있을 정도의 정보만
http://localhost:3000/productdetail/prod4/나이키%20윈드러너%20블랙%20L/나이키/60000/false
->
http://localhost:3000/productdetail/39
class component는 대문자인데,
보통 React Component 생성 시
Home/ index.jsx 하는 경우가 많은데 이게 디버깅 하기 어려워서
Home/Home.jsx 로 만들어서 index 파일만 import하는 폴더를 만들면 디버깅이 편리하다.
//Home.jsx
import Home from '/Home'
React의 모듈 = 한 파일
App 에서 data를 불러오지 않는다.
handleCheckNotInterest = (e) => {
const checked = e.target.checked;
if (checked) {
this.setState({isCheckNotInterest: true});
} else {
this.setState({isCheckNotInterest: false});
}
};
handleCheckNotInterest = (e) => {
const checked = e.target.checked;
this.setState({isCheckNotInterest: !checked
};
if(typeof(Storage) !== "undefined") {
//웹 스토리지 사용 전 브라우저에서 지원 가능할 때
} else {
//웹 스토리지 사용 전 브라우저에서 지원 안할 때
}
map은 새로운 배열을 반환하는 함수인데, return 값이 따로 없다면 map대신에 forEach를 사용하는 것이 맞다.
출처개체의 속성만 대상 객체로 복사하는 것
브랜드상태 json을 만드는것이 목적이었는데
brandState = [ {
name: ' ',
isFilter: false } ,{ }, { }..]
< 수정 전 >
setBrandList = () => {
const brandState = [{ name: '전체브랜드', isFilter: false }];
const brandList = [
...new Set(getStore('recentViewed').map((card) => card['brand'])),
];
brandList.forEach((brandName) => {
brandState.push({ name: brandName, isFilter: false });
});
return brandState;
};
이렇게 진행했느데,
< 수정 후 >
setBrandList = () => {
const brandList = [
...new Set(getStore('recentViewed').map((card) => card['brand'])),
];
const brandState = brandList.map((brand) =>
Object.assign({ name: brand, isFilter: false })
);
brandState.unshift({ name: '전체 브랜드', isFilter: false });
return brandState;
};
이와 같이변경했다.
리액트 프로젝트를 실행할 때 라이브러리와 웹팩 설정없이 간편하게 프로젝트를 시작할 수 있어서 사용했습니다.
(=== 함수형 컴포넌트와 클래스형 컴포넌트의 차이는?)
코드 자체가 간결하고 가독성이 좋기 때문에 사용한다고 생각합니다.
실제로 class형과 함수형을 사용해서 구현해봣을 때 가장 크게 느낀 장점은
함수형은 props에 다라 렌더링 결과가 보장된다는 것이었습니다.
class에서는 this로 참조변수를 이용해 상태를 관리하는데 이는 sideEffect 가능성이 있다고 생각하는데 함수형에서는 props를 매개변수로 받아서 JSX Element를 렌더링하니까 가독성도 좋고 결과도 보장 받고 일석이조라고 생각합니다.
React 라이프사이클
constructor -> render -> componentDidMount
딱 class 컴포넌트가 실행되면 우선 state를 저장하고
render로 컴포넌트를 DOM에 부착한 후 마운트완료 후 componentDidUpdate가 호출합니다.
잇님,, storage 브라우저 지원에 대한 건 몰랐는데 잘 알고갑니다