JSX(JavaScript XML)
- react 컴포넌트를 정의하는 데 사용되는 js 파일로 XML형식의 값을 반환해준다.
- 자바스크립트 변수를 HTML 요소에 바인딩할 수 있고, 조건부 렌더링이나 반복문을 사용할 수 있다.
- jsx파일을 통해 컴포넌트를 생성할 수 있다. 이를 통해 효율을 높이고 코드를 간결하게 관리할 수 있다.
**컴포넌트는 일종의 UI조각이다.
public 폴더
index.html - 브라우저가 가장 먼저 실행하는 파일
src 폴더
index.js - react 렌더링 정의 하는 코드 작성 -> index.html파일에 로딩됨 (id= root는 dom의 최상위 노드이다.)
app.js - index.js에서 기본으로 렌더링 하는 파일 , <React.StrictMode> 태그 안에 작성해준다.
** index.js의 <React.StrictMode> 안에는 컴포넌트를 태그 형태로 정의할 수 있으며 작성 시 자동으로 import 된다.
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
1) 컴포넌트는 src에서 관리한다
2) 함수 생성은 js 또는 jsx파일에서 해준다(jsx가 더 명확한 명칭)
※ 함수 생성 후 export 해줘야 다른 jsx(또는 js) 파일에서 import로 가져와 사용할 수 있다.
export default 함수명
📌 함수 자동완성 라이브러리 - VScode의 확장에서 설치
라이브러리를 설치 후 jsx 컴포넌트 파일에서 rafce를 입력한 뒤 Tap키를 누르면 아래와 같이 함수가 자동으로 완성된다.
* rafce ( react arrow function component export)
함수 작성법
1. function App( ){ }
2. const App = ( ) => { }
두 함수는 동일하게 작동되며 2번과 같은 형태를 화살표(arrow) 함수라고 부른다.
//함수 표현식
let sum = function(a,b,c){
return a+b+c;
}
//화살표 함수
let sum = (a,b,c) => a+b+c;
alert(sum(1,2,3));
//결과는 6
인수 a, b, c를 받아 a+b+c 결과를 반환(return)
** 인수가 하나밖에 없다면 괄호 생략가능, 인수가 없으면 괄호는 생략할 수 없다
let double = a => a*2 let hello = ( ) => alert("안녕"); |
jsx문법
- return( ) 안에 작성되는 코드가 jsx문법이다.
- HTML 같은 생김새를 갖고 있지만 실제로는 JavaScript이다.
- 리액트 컴포넌트 파일에서 XML형태로 코드를 작성하면 babel이 jsx를 js로 변환해 준다.
** babel은 자바스크립트의 문법을 확장해 주는 도구로 최신문법을 js로 변환해 주어 이전 브라우저 환경에서도 실행할 수 있게 해 줌.
jsx -> JavaScript 변환 규칙
- 닫는 태그 필수 ( <input />, <br/> )
- 두 개 이상의 태그는 하나의 태그로 감싸져 있어야 한다.
- <> </> 단순 감싸기용 태그 Fragment 사용 가능 (브라우저 상에서는 출력되지 않는다)
- JSX 내부에 js변수를 사용할 때는 {변수명}으로 작성한다. (변수, 조건식, 연산, 오브젝트 넣을 수 있음)
- 작성한 태그에는 클래스 속성을 class가 아닌 className을 사용한다.
- 주석 {/*내용*/} 형태로 작성
- 같다(equal)는 === 연산자 세 개 사용한다.
{조건문 ? 값 : 값} | 삼항연산자로 해당 조건문이 만족하면 첫번째 구문을 , 아니면 콜론 뒤 구문 실행 |
{조건문 && 값} | 조건을 만족할 때만 렌더링한다, |
{변수 || 값} | 변수가 undefined일 경우에만 값을 도출한다. |
jsx 스타일 적용
1) 태그 직접적용(내부스타일)
<div style = {{width :'500px', margin:'0px auto', backgroundColor:'red'}} >
-> 중괄호 두 개, 카멜표기법, 콤마로 스타일 구분
** 속성값에 숫자만 들어가면 '' (따옴표) 생략 가능, 기본값이 px이다.
2) 스타일 변수 생성
<div style = {style}>const style = { width :'500px', margin:'0px auto,backgroundColor:'red''}
-> style 변수에 css속성 값을 담아 style 속성에 적용
'FE > React' 카테고리의 다른 글
React Context API 사용법 및 Props와 Context차이점 (0) | 2023.03.16 |
---|---|
리액트로 라우터 생성하기 (react-router-dom & qs 라이브러리) (0) | 2023.03.09 |
React - 카카오 API를 이용한 도서검색 (axios라이브러리, async, await) (0) | 2023.03.06 |
HTML의 DOM과 JavaScript의 관계 & React의 탄생 (0) | 2023.03.05 |
React란? cmd 리액트 설치 및 실행 (VScode) - yarn (0) | 2023.02.27 |