import React from 'react';
// 함수형 컴포넌트는 이렇게 쓸 수도 있고
// function Bucketlist(props){
// return (
// <div>버킷 리스트</div>
// );
// }
// 이렇게 쓸 수도 있어요. =>가 들어간 함수를 화살표 함수라고 불러요.
// 저희는 앞으로 화살표 함수를 사용할거예요.
// 앗 () 안에 props! 부모 컴포넌트에게 받아온 데이터입니다.
// js 함수가 값을 받아오는 것과 똑같이 받아오네요.
const BucketList = (props) => {
// 컴포넌트가 뿌려줄 ui 요소(리엑트 엘리먼트라고 불러요.)를 반환해줍니다.
return (
<div>
버킷 리스트
</div>
);
}
// 우리가 만든 함수형 컴포넌트를 export 해줍니다.
// export 해주면 다른 컴포넌트에서 BucketList 컴포넌트를 불러다 쓸 수 있어요.
export default BucketList;
import 해오기
import React from 'react';
import './App.css';
// BucketList 컴포넌트를 import 해옵니다.
// import [컴포넌트 명] from [컴포넌트가 있는 파일경로];
import BucketList from './BucketList';
import React from 'react';
import logo from './logo.svg';
// BucketList 컴포넌트를 import 해옵니다.
// import [컴포넌트 명] from [컴포넌트가 있는 파일경로];
import BucketList from './BucketList';
// 이 import를 통해 css 파일을 불러다 씁니다!
import './style.css';
css를 부모컴포넌트에 블러오면 자식들을 불러올 필요가없다.
이벤트 리스너는 어디에 위치해야할까요?
클릭을 하건, 마우스를 올리건 DOM 요소가 있어야 이벤트가 발생하는 지 지켜볼 수 있겠죠
그럼 함수형 컴포넌트에서는 componentDidMount() 역할을 하는 친구를 가져다 써야겠네요!
useEffect() 훅을 써봅시다!
useEffect()는 리액트 훅이에요.
라이프 사이클 함수 중 componentDidMount와 componentDidUpdate, componentWillUnmount를 합쳐둔 거라고 생각하면 금방 이해할 수 있어요
// 첫번째 인자는 익숙하죠! 화살표 함수! 넵, 렌더링 시 실행할 함수가 여기에 들어갑니다.
// 두번째 인자의 []! 디펜던시 어레이라고 불러요. 여기 넣어준 값이 변하면 첫번째 인자인 콜백함수를 실행합니다.
React.useEffect(() => {
// 여기가 rendering 때 실행될 구문이 들어가는 부분입니다.
// componentDidMount, componentDidUpdate일 때 동작하는 부분이 여기예요.
// do something ...
return () => {
// 여기가 clean up 부분입니다.
// componentWillUnmount 때 동작하는 부분이 여기예요.
//do something ...
};
}, []);
실행할 함수 먼저 만들어요.
const hoverEvent = (e) => {
// 콘솔로 이 이벤트가 누구에게서 일어났는 지 확인할 수 있습니다.
console.log(e.target);
// ref랑 같은 녀석인 지 확인해봐요!
console.log(text.current);
text.current.style.background = "yellow";
};
return ...
이제 addEventListner()를 이용해 등록
//Text.js
// 첫번째 인자는 익숙하죠! 화살표 함수! 넵, 렌더링 시 실행할 함수가 여기에 들어갑니다.
// 두번째 인자의 []! 디펜던시 어레이라고 불러요. 여기 넣어준 값이 변하면 첫번째 인자인 콜백함수를 실행합니다.
React.useEffect(() => {
// 여기가 rendering 때 실행될 구문이 들어가는 부분입니다.
// componentDidMount, componentDidUpdate일 때 동작하는 부분이 여기예요.
text.current.addEventListener("mouseover", hoverEvent);
return () => {
// 여기가 clean up 부분입니다.
// componentWillUnmount 때 동작하는 부분이 여기예요.
//do something ...
};
}, [text]);
useEffect에서 clean up은 return 구문을 이용
//Text.js
// 첫번째 인자는 익숙하죠! 화살표 함수! 넵, 렌더링 시 실행할 함수가 여기에 들어갑니다.
// 두번째 인자의 []! 디펜던시 어레이라고 불러요. 여기 넣어준 값이 변하면 첫번째 인자인 콜백함수를 실행합니다.
React.useEffect(() => {
// 여기가 rendering 때 실행될 구문이 들어가는 부분입니다.
// componentDidMount, componentDidUpdate일 때 동작하는 부분이 여기예요.
text.current.addEventListener("mouseover", hoverEvent);
return () => {
// 여기가 clean up 부분입니다.
// componentWillUnmount 때 동작하는 부분이 여기예요.
text.current.removeEventListener("mouseover", hoverEvent);
};
}, [text]);