node-modules
파일은 git ignore되기 때문에 node-modules
파일을 npm install을 통해 받아야 한다.import React from 'react';
class Hello extends React.Component {
render() {
return (
<>
<h1>하하호호</h1>
<h2>냠냠뇸뇸</h2>
</>
);
}
}
export default Hello;
import React from "react";
function Bye() {
return (
<div>
<a href="https://www.naver.com">네이버로 이동</a>
</div>
)
}
export default Bye;
import React from "react";
const Greet = () => {
return (
<ul>
<li>사과</li>
<li>딸기</li>
<li>오렌지</li>
</ul>
)
};
export default Greet;
function Person(props) {
return <h1>Hello, {props.name}. You are {props.age} years old.</h1>;
}
function App() {
return <Person name="Sarah" age={28} />;
}
<ExpenseItem title={"하하호호"} price={8000} />
<ExpenseItem title={"룰루랄라"} price={6000} />
<ExpenseItem title={"꾸꾸까까"} price={5000} />
function Welcome(props) {
return <div>{props.children}</div>;
}
function App() {
return <Welcome>Hello, world!</Welcome>;
}
App 컴포넌트에서 Welcome 컴포넌트 사이에 Hello, world!
는 children으로 전달 -> Welcome 컴포넌트에는 "Hello, world!"가 출력
컴포넌트를 쓸 때 <Card />
방식으로 쓰지만 원래 태그처럼 <Card>내용</Card>
으로 사용하면 내용 부분은 prop.children을 의미
const ExpenseItem = ({ date, title, price: exPrice }) => {
// 함수 선언
// 원화 표기법으로 변환
const formattedPrice = new Intl.NumberFormat('ko-KR').format(exPrice);
// 이벤트 핸들러 밖에서는 docu.qs 불가능
// 이벤트 핸들러 선언
const clickHandler = e => {
// 이 곳은 DOM이 형성된 시점(버튼이 그려진 이후)이기 때문에 여기서는 docu.qs이 가능
console.log(e.target.previousElementSibling.firstElementChild.textContent);
console.log('클릭함!');
// const $price = document.querySelectorAll('.expense-item__price'); // 가능
// console.log($price);
};
return (
<Card className='expense-item'>
<ExpenseDate exDate={date} />
<div className='expense-item__description'>
<h2>{title}</h2>
<div className='expense-item__price'>{formattedPrice}원</div>
</div>
<button id='btn' onClick={clickHandler}>버튼1</button>
<button id='btn2' onMouseOver={e => alert('하하!')}>버튼2</button>
</Card>
)
}