본문으로 바로가기

JSX

category 개발/React 2019. 6. 22. 18:29
const element = <h1>Hello, world!</h1>;​

Javascript를 확장한 문법.
JSX는 React element를 생성한다.

React는 마크업파일과 로직을 분리하는 대신 둘 다 포함하는 컴포넌트 라는 느슨하게 연결된 유닛으로 관심사를 분리한다.

JSX에 표현식 포함하기

const name = 'Hari';
const element = <h1>Hello, {name}</h1>;

ReactDOM.render(
  element,
  document.getElementById('root')
);

JSX의 중괄호 안에는 유효한 모든 Javascript 표현식을 넣을 수 있다.
즉, {name} 처럼 변수만 넣을 수도 있고 {2 + 2}처럼 수식을 넣을수도 있고 {user.id} 처럼 객체의 프로퍼티값을 넣을 수도 있고 함수를 넣을수도 있다.

JSX도 표현식

컴파일이 끝나면 JSX 표현식의 js 함수가 호출되고 js객체로 인식된다.
if, for 등의 함수안에서 사용하고 변수할당, 인자 등으로 활용가능.

function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;
  }
  return <h1>Hello, Stranger.</h1>;
}

컴파일 후 formatName이 호출

JSX 속성정의

const element = <div tabIndex="0"></div>;
const element = <img src={user.avatarUrl}></img>;

속성에 따옴표를 이용해 문자열 리터럴을 정의하거나
중괄호를 사용하여 속성에 js표현식을 넣을수도 있다.
그러나 위 2가지를 동시에 사용하면 안된다. 따옴표안에 표현식을 넣는것처럼..
"{user.avatarUrl}" 이런식으로.. 이거 은근히 자주하게 되는 실수.

JSX는 HTML보다 Javascript에 가깝다.
따라서 HTML속성이름은 camelCase 로 적어야한다.
예를들어 class='btn'  은 className='btn'
tabindex는 tabIndex 로


JSX로 자식 정의

태그는 항시 닫아주어야한다.
JSX 태그는 자식을 포함할 수 있다.

const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

 

'개발 > React' 카테고리의 다른 글

Redux  (0) 2019.06.26
Reducer  (0) 2019.06.25
Actions  (0) 2019.06.21
Views와 Controller-Views  (0) 2019.06.21
Stores  (0) 2019.06.21