ReactJS

react기초 - 노마더코더 ( 영화 웹 서비스 만들기 ) - hook

PHM 2022. 3. 12. 09:36

- React.useState

let a = 0;
function ab() {
}

// 같음
const [a,ab] = React.useState(0);	// 배열로 [0,f] 로 들어가있음

- state 변경 방식

const [counter, setCounter] = React.useState(0);
const onClick = () => {
	// 1.
	setCounter(counter+1);
	// 2.
	setCounter(current => current+1);

1. 직접 값 설정 : 별로 좋은 방법x , counter가 다른 곳에서 update 될 수도 있음

2. 함수를 전달하기 : current의 첫번째 argument는 현재값 / return값이 새로운 state -> 더 안전

 

- React.memo()

  Memo : 컴포넌트의 props가 변경되지않으면 랜더링시키고 싶지않을때 사용

const MemorizedBtn = React.memo(Btn);
// Btn은 컴포넌트

 

- react-create-app 에서는 React.을 사용할 필요가 없음.

 

- useEffect : 코드가 딱 한번만 실행될 수 있도록 보호 / API호출과 같은 경우 딱 한번 실행만 원할 경우

  첫번째 argument :  우리가 딱 한번만 실행하고 싶은 코드

  두번째 argument : dependencies, 해당 값 변화시 코드 실행

const iRunOnlyOnce = () => {
	console.log("i run only once.");
}
useEffect(iRunOnlyOnce,[]);

코드의 특정한 부분만이 변화했을 때,  원하는 코드들을 실행할 수 있는 방법 

useEffect(()=>{
	if(keyword !=="" && keyword.length > 5 ){
		console.log("SERCH FOR",keyword);
	}
},[keyword]); 		// keyword가 변화할 때 코드를 실행

 

- cleanup function : 컴포넌트가 사라질때의 실행 코드

function Hello() {
	useEffect(()=>{
		console.log("created:)");
		return () => console.log("destroyed :(");
}, []);

자주 사용하는 코드는 아님

 

- useParams : react-router-dom / url에서 받아오는 값을 알 수 있음

                   react router는 변수값을 넘겨줌

 

- useHistory : router의 hook

const history = useHistory();
history.push("/");