크롬 개발자 도구로 react관련 앱 다운받으면 component로 해당 사이트에서 구성하는 컴포넌트들을 확인할 수 있다.
컴포넌트 표시가 안되는 부분은 순수 자바스크립트임
- state는 그 컴포넌트에서 가진 데이터
- props는 부모로부터 받아온 데이터가 props
JSX
- 분명 자바스크립트 코드인데 html과 비슷한 코드가 쓰여지는 중
app.jsx
import React from 'react';
import './app.css';
function App() {
return <h1>Hello :)</h1>
}
export default App;
자바스크립트 코드위에서 간단하게 html처럼 쓸 수 있게 만들어진게 jsx
html
class / onclick / 마크업언어
jsx
className / onClick / 자바스크립트언어 -> 나중에 바벨이 이것을 모두 html과 자바스크립트로 변화함
{} 를 이용하면 로직사용가능
jsx는 한가지 태그로 감싸줘야함. 두 가지의 자식노드를 이용할때는 묶어야함.
묶기위해 원래 div를 씀. 근데 스타일링할때가 아니면 디브 낭비이다!
하지만 이제는 React.Fragment 이용하면 가능
아니면 <> 로 이용하면 프래그먼트와 같음!
JSX는 다수의 태그를 리턴못함 그래서 묶어서 해야함.
import React from 'react';
import './app.css';
function App() {
const name = 'dadong';
return (
<>
<h1>Hello :) {name}</h1>
<h1>방가방가</h1>
</>
);
}
export default App;
<> 와 </>로 묶어줌
아래 방법으로도 가능 -> 여러 자식을 그룹화할 수 있음!
render() {
return (
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
사용자 정의 컴포넌트는 반드시 대문자로 시작해야합니다
Element가 소문자로 시작하는 경우에는 <div> 나 <span> 같은 내장 컴포넌트라는 것을 뜻하며 'div' 나 'span' 같은 문자열 형태로 React.createElement에 전달됩니다. <Foo />와 같이 대문자로 시작하는 타입들은 React.createElement(Foo)의 형태로 컴파일 되며 JavaScript 파일 내에 사용자가 정의했거나 import 한 컴포넌트를 가리킵니다.
컴포넌트의 이름은 대문자로 시작하는 것을 추천합니다. 만약 소문자로 시작하는 컴포넌트를 사용해야 한다면, 대문자로 시작하는 변수에 할당한 뒤 JSX에서 이 변수를 사용하세요.
예를 들어 아래의 코드는 예상대로 실행되지 않을 것 입니다.
출처
ko.reactjs.org/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized
코드블럭을 이용해서 배열에 데이터 넣고 사용가능
=> jsx : 자바스크립트 코드와 html 섞어서 사용가능!
import React from 'react';
import './app.css';
function App() {
const name = 'dadong';
return (
<>
<h1>Hello :) {name}</h1>
{
['😺','👻'].map(item => (
<h2>{item}</h2>
))}
</>
);
}
export default App;
'[React] Front-End' 카테고리의 다른 글
[FE] React 클론한 프로젝트 React 띄우기 (0) | 2021.05.10 |
---|---|
[FE] html/css: SPAN TAG (0) | 2021.05.10 |
[리액트기초] 2) 리액트 개념정리 / 컴포넌트 class vs function / html-js-jsx연동 (0) | 2021.05.06 |
[리액트기초] 1) React 프로젝트 시작하기(환경셋팅 편) (0) | 2021.05.06 |
[Front-End] FontAwesome /CSS Gradient/ (0) | 2021.05.04 |