프론트엔드 개발자가 될거야./react
[2023년 목표] 리액트 마스터🔥
정니정은니
2023. 1. 2. 22:37
2023년에는 react, typeScript, react-query, recoil, next.js 마스터가 2023년 목표이다.
프론트엔드 신이 되고싶다!! 나능 할 수 있다 !!!
그 첫 게시물로 노마드코더 리액트 마스터 강의를 들으며 알게된 간단한 react tip(?)을 정리했다.
1. return없이 map쓰기, 2. →는 오른쪽 화살표
{coins.map((coin) => (
<Coin key={coin.id}>
<Link to={`/${coin.id}`}>{coin.name} →</Link>
</Coin>
))}
2. Link를 통해 다른 화면에 정보 보내기
화면 이동할 때 데이터를 보낸다는 것은
parameter를 이용해서 URL에게 정보를 넘기는 것이다.
이런 방식으로 한 화면에서 다른 화면으로 정보를 받아올 수 있다.
<Link to={`/${coin.id}`} state={coin}>
Link 방식으로 했을 때 누군가가 페이지에 바로 접속하려고(URL을 치고 들어오려고하면) 한다면 에러가 난다. (시크릿모드)
왜냐하면 state가 생성되려면 Home화면을 먼저 열어야 하기 때문이다. (클릭할 때 state가 만들어지기 때문에)
이것을 해결하기 위해서 물음표 해주면 된다.
function Coin() {
const [loading, setLoading] = useState(true);
const { state } = useLocation() as LocationState;
return (
<Container>
<Header>
<Title>{state?.name || "Loading..."}</Title> // state가 존재하면 name을 가져오고 없으면 Loading을 보여줘라.
</Header>
{loading ? <Loader>Loading...</Loader> : null}
</Container>
);
}
3. useEffect 즉시 실행 함수
useEffect(() => {
(async () => {
const response = await fetch("https://api.coinpaprika.com/v1/coins");
const json = await response.json();
})();
}, []);
4. 변수 캡슐화 : 변수 2개 합치기
// 기존
(async () => {
const response = await fetch(
`https://api.coinpaprika.com/v1/coins/${coinId}`
);
const json = await response.json();
})();
//수정 후
(async () => {
const response = await (
await fetch(`https://api.coinpaprika.com/v1/coins/${coinId}`)
).json();