react 기초문법
기초문법<3> 여러가지들🍓
저번 글과 같이 계속해서 기초 문법을 알아보자.
기초 문법🚩
npm install styled-components
className이 중복되지않게 class선언없이 components에 css를 직접 넣기위해 깔아줌.(CSS in js)
import styled from "styled-components";
셋팅은 이렇게 한다.
let Box = styled.div`
padding: 20px;
`;
<Box>이렇게</Box>
사용 예시
class Abcd extends React.Component {
componentDidMount() {
}
componentWillUnmount() {
}
}
Lifecycle & Hook이라고 한다.
import React, { useEffect, useState } from "react";
function Abcd() {
useEffect(() => {
console.log(1);
return ()=>{console.log(2)}
},[]); // [] 안에 실행조건을 쓰면된다. 변수들. 빈칸을 넣으면 한번만 실행
}
최신문법의 Hook안 useEffect는 랜더링될때, 업데이트될때 ‘1‘을 보여주고 Abcd라는 컴포넌트가 끝날때 ‘2‘라는 값을 보여준다.
useEffect(() => {
let timer = setTimeout(() => { bloolMo(false) }, 2000);
return () => { clearTimeout(timer) };
}, []);
‘setTimeout’콜백함수와 ms를 사용하고 ‘2초 후에 함수안의 일을 해라’라는 뜻
또한 관습적으로 변수에 저장해두고 useEffect와 함께 사용시에는 timer를 clear 해준다.
import axios from "axios";
<div onClick={ ()=>{
axios.get('url')
.then( (result)=>{console.log(result.data)} ) // 성공시
.catch( (err)=>{console.log(err)} ) // 실패시
} }
npm install axios ➡️ Ajax를 사용하기위해.
해당 url로 get요청을 날림
그리고 나서 해야할일을 then에 넣는다.
axios라는 라이브러리는 json파일을 ““을 다 지워준 object타입으로 만들어준다.
axios.post( 'url', {객체} )
post요청은 해당 url로 필요한것을 보낸다.
let arr1 = ['a','b','c']
let arr2 = ['d','e','f']
let arr3 = [...arr1,...arr2]
console.log(arr3) // ['a','b','c','d','e','f']
‘…‘이란 대괄호를 벗겨주세요 라는뜻이다. 새로운 배열을 만들때 유용하다.
let stackContext = React.createContext();
function App() {
let [stack,stackModify] = useState([1,2,3])
return(
<stackContext.Provider value={stack}>
<A /> //사용할 공간
</stackContext.Provider>
)
}
function A() {
let stack = useContext(stackContext);
return <B />
}
function B() {
let stack = useContext(stackContext);
{stack} // [1,2,3]
}
‘context 활용하기’
App에서 만든 변수 ➡️ A ➡️ B에서 자유롭게 사용할 수 있음
근데 불편하다.
import React, {useState, useContext, lazy, Suspense} from 'react';
let Detail = lazy( ()=>{ return import('./Detail.js') } );
<Suspense fallback={ <div>로딩중입니다~!</div> }>
<Detail/>
</Suspense>
‘lazy, Suspense 활용하기’
위와같이 셋팅해주면 detail이라는 컴포넌트 즉 페이지로 들어갈때 import해준다.
컴포넌트들이 많아지면 import하는 것만으로 부담을 주기때문에
필요할때만 import해주는것이 좋다.