Web Study/React

[React] JSX

칸타탓 2018. 12. 18. 16:49

2. JSX

 

 

  • JSX : 자바스크립트 내애서 HTML코드를 자유롭게 작성할 수 있다

var a = (
    <div>
        Welcome to <b>React CodeLab</b>
    </div>
);

"use strict";

var a = React.createElement(
  "div",
  null,
  "Welcome to ",
  React.createElement(
    "b",
    null,
    "React.js CodeLab"
  )
);

 

- XML-like syntax native JavaScript 변경해준다.

- " " 감싸지 않는다.

- ( ) 사용하지 않아도 오류는 발생 하지 않지만 가독성을 위하여 사용하기

 


 

- 모든 JSX컨테이너 앨리먼트 안에 포함시켜야 한다.

/* 에러 발생 코드 */
render() {
    return (
        <h1>Hi</h1>
        <h2>I am Error</h2>
    )
}

/* 컴포넌트에서 여러 Element를 렌더링 할 때 꼭 container element 안에 포함시키기 */
render() {
    return (
        <div>
            <h1>Hi</h1>
            <h2>Yay! Error is gone.</h2>
        </div>
    )
}

 

- 자바스크립트 코드를 사용할 떄는 {}

/* JSX 안에서 JavaScript를 표현하는 방법은 간단 => 그냥 { } 로 wrapping 하면 된다. */
render() {
    let text = "Hello React!";
    return (
        <div>{text}</div>
    );
}

/* If Else 문은 JSX에서 사용불가 이에 대한 대안은 tenary expression 
   condition ? true : false */

render() {
    return (
        <p>{ 1==1 ? 'True' : ' False' }</p>
    );
}

 

- JSX 안에서 style 을 설정 할때는, string 형식을 사용하지 않고 key 가 camelCase 인 객체가 사용된다.

render() {
    let style = { 
        color: 'aqua',
        backgroundColor: 'black' //camelCase
    };

    return (
        <div style={style}>React CodeLab</div> //{사용}
    );
}

/* JSX 안에서 class 를 설정 할 때는 class= 가 아닌 className= 을 사용하세요. */
render() {
    return (
        <div className="box">React CodeLab</div>
    );
}

 

- JSX 안에서 주석을 작성 할 때는 {  /* ... */  }형식으로 작성

/* Nested Element 부분에 설명했던것과 같이 container element 안에 주석이 작성되어야 한다.
=> 그렇지 않으면 에러 발생*/

render() {
    return (
        <div>
            { /* This is How You Comment */ }
            { /* Multi-line
                    Testing */ }
                React CodeLab
        </div>
    );
}

 


  • JS

class Codelab extends React.Component {
  render() { //모든 리액트 컴포넌트는 랜더 매소드가 있다 - 컴포넌트가 어떻게 생길지 정의하는 것
    let text = 'Hi Codelab'; 
    let style = {
      backgroundColor: 'aqua'
    };

    return (
      <div style={style}>{text}</div> //JSX
    );
  }
}

class App extends React.Component {
  render() {
    return (
      <Codelab/>
    );
  }
}

//랜더링
//랜더 메소드를 이용하여 컴포넌트를 랜더링한다
//첫번째 인수: App컴포넌트를 랜더링, 두번째 인수: 이 컴포넌트를 랜더링할 앨리먼트
ReactDOM.render(<App/>, document.getElementById('root'));

 

  • HTML

<div id="root"></div>

 


 

[참고]

 

https://velopert.com/867 (JSX 텍스트 강좌)

 

https://developer.mozilla.org/ko/docs… (let 키워드)

 

 

'Web Study > React' 카테고리의 다른 글

[React] 프로젝트 만들기  (0) 2018.12.20
[React] 컴포넌트 매핑 (Component Mapping)  (0) 2018.12.18
[React] props, state  (0) 2018.12.18
[React] React.js 기초  (0) 2018.12.18