[참고링크]
function App() {
useEffect(() => {
console.log(1);
}, []);
return ...
}
const OuterBox: FC = () => {
useEffect(() => {
console.log(2);
}, []);
return ...
};
const InnerBox: FC = () => {
useEffect(() => {
console.log(3);
}, []);
return ...
};
//실행결과
3
2
1
예시코드
function App() {
useEffect(() => {
console.log(1);
}, []);
return ...
}
const OuterBox: FC = () => {
useEffect(() => {
console.log(2);
}, []);
return (
<>
<h2>Outer BOX</h2>
<Suspense fallback={<div>loading...</div>}>
<InnerBox />
</Suspense>
</>
);
};
const InnerBox: FC = () => {
// 깃허브 stars 수를 갖고오는 비동기 요청
const repoStars = useRecoilValue(getStars);
useEffect(() => {
console.log(3);
}, []);
return ...
};
//실행결과
2
1
3
InnerBox에서 비동기 요청을 할 때 Suspense한테 렌더링을 interrupt
당하기 때문에 OuterBox, App이 먼저 실행 되고 비동기 요청이 완료된 시점에 InnerBox가 렌더링이 되면서 3이 출력된 것이다.[참고링크]
var name = 'bathingape'
console.log(name) // bathingape
var name = 'javascript'
console.log(name) // javascript
let name = 'bathingape'
console.log(name) // bathingape
let name = 'javascript'
console.log(name)
// Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'react'
console.log(name) //react
const name = 'bathingape'
console.log(name) // bathingape
const name = 'javascript'
console.log(name)
// Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'react'
console.log(name)
//Uncaught TypeError: Assignment to constant variable.
[참고링크]
- Pending (대기)
- Fulfilled (이행)
- Rejected (실패)
비동기 처리가 완료 되지 않았다면Pending
, 완료 되었다면Fulfilled
, 실패하거나 오류가 발생하였다면Rejected
상태를 갖는다.
[참고링크]