FRONT-END/TIL
[TIL] 230203 JSX
서근
2023. 2. 5. 05:32
반응형
JSX?
// JavaScript를 확장한 문법
// JavaScript의 모든 기능이 포함되어 있으며, React Element를 생성하기 위한 문법
const element = <h1>Hello, world!</h1>;
리액트는 딱 하나의 HTML
파일만 존재 한다. (public
폴더 아래 index.html
)
리액트에서 뷰를 그리는 방법은 JSX문법을 사용하여 React 요소를 만들고 DOM에 렌더링 시켜서 뷰를 그리게 된다.
사용 방법
일반적으로 React 에서는 Html을 사용할 수 없다.
<div>
<h1>서근 개발 노트</h1>
<p>환영합니다.</p>
</div>
그래서 나온게 JSX!
const start_half =
<div>
<h1>안녕하세요!</h1>
<p>시작이 반이다!</p>
</div>;
VSCode 에서 react snippet 익스텐션을 깔면 자동으로 스니펫이 추가되니 꼭 설치하자
https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets
JSX 주의사항
1) 태그를 닫자
input 요소에서 반드시 마지막에 닫는 태그를 써주자.
<input type='text'/>
2) 무조건 1개의 엘리먼트를 반환해라
리액트의 컴포넌트에서 반환할 수 있는 엘리먼트는 1개 이기 때문에 div 태그안에 요소들을 작성해야 한다.
function App() {
return (
<p>안녕하세요!</p>
<div className="App">
<input type='text'/>
</div>
);
}
위 코드는 p태그 하나만 반환되기 때문에 에러
이런식으로 작성하면 됨!
function App() {
return (
<div className="App">
<p>안녕하세요</p>
<input type='text'/>
</div>
);
}
3) JSX에서 JS 사용
JSX 내부에서 중괄호를 열어 JS를 사용할 수 있다.
function App() {
const myName = '서근';
const num = 1'
return (
<div>
<p>hello {myName}!</p>
<p>{number > 10 ? number+'은 10보다 크다': number+'은 10보다 작다'}</p>
</div>
);
}
4) class 는 className 으로
일반적으로 Html에서 클래스명 속성을 넣어주듯이 class="" 를 하는것이 아닌 className="" 처럼 사용해야 한다.
<div calssName="title">안녕하세요</div>
5) 인라인 Style.css
Html에서 태그 안에 스타일을 적용했듯이, JSX에서도 가능하지만 사용 방법이 조금 다르다
HTML
<!--일반적인 HTML-->
<div class="someClass" style="background-color: tomato">안녕하세요<div>
JSX
<div className="someClass" style={{
color: 'red',
backgroundColor: 'toma'
}}>안녕하세요<div>
주의할점은 JSX에서는 -
를 사용해서는 안된다.
스타일 객체를 변수로 만들고도 사용가능하다.
const App = () => {
const style = { color: 'red', backgroundColor: 'tomato'}
return (
<div style={style}>안녕하세요</div>
);
}