React

[React] JSX

ui-o 2023. 10. 13. 17:26
반응형

JSX (JavaScript XML)

  • 자바스크립트에 XML을 추가한 확장 문법
  • Javascript의 공식적인 문법이라고 할 수는 없다.
  • 브라우저에서 실행 전에 코드가 번들링되는 과정에서 바벨을 사용하여  자바스크립트 형태의 코드로 변환.
  • Javascript에서 HTML을 작성하듯이 비슷하게 작성할 수 있도록 해 주는 것이 JSX의 장점이자 사용하는 이유

React에서의 JSX

  • React.ceateElement()의 호출을 통해 일반 자바스크립트 객체인 'React 엘리먼트'로 컴파일 됨
  • Babel은 JSX를 React.createElement() 호출로 컴파일 함

// 아래 두 코드는 동일
const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

 JSX 특징

  • 컴포넌트에 여러 요소가 있을 경우 반드시 부모요소가 하나는 감싸야 함, v16이상 부터는 div를 대신하여  fragment 기능을 import 해 대체  가능 
  • 자바스크립트의 값을 JSX안엣서 렌더링 시에는 { }를 감싸서 렌더링 가능.
  • 가독성이 높고 HTML 태그 사용으로 활용도가 높음
function App(){
const name = 'Na'
	return (
    	<>
        <h1>{name}</h1>
        </>
    )

}
  • undefined를  렌더링 하지 않아야 함 (단, JSX 내부에서는 undefined 사용 가능)
  • inline style 선언:  하이픈(-) → CamelCase 사용
  • class명 선언:  class → className 사용
  • 반드시 닫는 태그 사용 :   <input></input> , <input/> ,  <br/>
  • 주석표기:  {/*  ...*/}

 

JSX 문법

1. 삼항연산자

  • JSX 내부에서 IF문 사용이 불가하므로 삼항연산자 사용
// [App.js]

function App() {
  // App 컴포넌트 생성
  const name = 'John';
  return (
    <div className='App'>
      {name === 'John' ? <h1>true</h1> : <h1>false</h1>}
    </div>
  );
}

export default App;

 

2. AND 연산자 

  • 특정 조건에 만족할 때만 내용을 보여주고, 아닌 경우 내용을 보여주지 않는 조건에  AND연산자 (&&)를 활용
  • 단,   0은 예외적으로 화면에 표시 됨
// [App.js]

function App() {
  // App 컴포넌트 생성
  const name = 'John';
  return (
    <div className='App'>
      {name==='John' && <h1>true</h1>}
    </div>
  );
}

export default App;

 

반응형

'React' 카테고리의 다른 글

[React] React Props  (1) 2023.10.20
[React] React Hook  (0) 2023.10.18
[React] React Component  (2) 2023.10.15
[React] React Element  (0) 2023.10.15
[React] React 기초  (0) 2023.10.13