컴포넌트 = 리액트의 꽃
이유는? 리액트로 작성된 화면은 컴포넌트만으로 구성
데이터가 주어졌을때 이에 맞춰 UI를 만들어주고 변화가 일어날 때 주어진 작업 처리를 한다.
또한 임의 메서드를 만들어 특별한 기능을 붙여줄 수도 있다.
컴포넌트 선언방식
1. 함수형 컴포넌트
: 메모리자원을 클래스형보다 덜 사용하며, 더 선언하기 편함
단점 - state와 라이프사이클 API사용이 불가했었으나, 지금은 Hooks라는 기능을 통해 사용가능
2. 클래스형 컴포넌트
: state기능 및 라이프사이클 기능을 사용할 수 있다는 것과, 임의 메서드를 정의할 수 있음
이때 클래스형 컴포넌트에서는 render함수가 꼭 있어야 하며, 그 안에서 보여줄 jsx를 반환한다.
import React, { Component } from 'react';
class App extends Component {
render() {
const name = 'react';
return <div className="react">{name}</div>;
}
}
export default App;
사용하기
scr디렉터리에 새파일 만들기
1. 함수형
import React from 'react';
const MyComponent = () => {
return <div>나의 새롭고 멋진 컴포넌트</div>;
};
export default MyComponent;
()=>{} 즉 화살표 함수 문법은 ES6에 도입된 것으로 주로 함수를 파라미터로 전달할 때 유용하다.
기존의 function 키워드 사용과 동일한 기능을 한다.
app.js에서 불러와 사용
import React from 'react';
import MyComponent from './MyComponent';
const App = () => {
return <MyComponent />;
};
export default App;
2. 클래스형
import React, { Component } from 'react';
class MyComponent extends Component {
render() {
return (
<div>
나의 새롭고 멋진 컴포넌트
</div>
);
}
}
export default MyComponent;
컴포넌트 여러개 사용하기
MyComponent2
import React, { Component } from 'react';
class MyComponent2 extends Component {
render() {
return (
<div>
저는 MyComponent2 입니다!
</div>
);
}
}
export default MyComponent2;
MyComponent3
import React, { Component } from 'react';
class MyComponent3 extends Component {
render() {
return (
<div>
저는 MyComponent3 입니다! 하하하!
</div>
);
}
}
export default MyComponent3;
app.js
import './App.css';
import MyComponent from './MyComponent';
import MyComponent2 from './MyComponent2';
import MyComponent3 from './MyComponent3';
function App() {
return (
<div>
<MyComponent />
<MyComponent2 />
<MyComponent3 />
</div>
);
}
export default App;
실습하기
컴포넌트 1.
import React, { Component } from 'react';
export default class Test extends Component {
render() {
const name = '---';
const my_style = {
backgroundColor: 'blue',
color: 'orange',
fontSize: '40px',
padding: '12px',
};
return <div style={my_style}>{name}</div>;
}
}
컴포넌트2.
import React, { Component } from 'react';
import cat from '../cat2.jpeg';
export default class Test2 extends Component {
render() {
const style = { color: 'orange', fontSize: '40px', marginTop: '20px' };
return (
<div style={style}>
<h2>"안녕하세요"</h2>
<img src={cat} alt="cat" style={{ width: '400px' }}></img>
</div>
);
}
}
app.js
import React, { Fragment } from 'react';
import './App.css';
import Test from './components/Test';
import Test2 from './components/Test2';
function App() {
return (
<Fragment>
<Test />
<Test2 />
</Fragment>
);
}
export default App;
'[부트캠프] IT 코딩 부트캠프 후기 > [Let's TIL🚴♀️] CodingON' 카테고리의 다른 글
[react] State 사용하기 (0) | 2023.01.10 |
---|---|
[React] Props (0) | 2023.01.10 |
[react] JSX (0) | 2023.01.10 |
[React] 컴포넌트 사용하기, 기본세팅하기 (0) | 2023.01.10 |
[react] TypeScript, useState (0) | 2023.01.05 |