티스토리 뷰

FRONT-END/REACT

[REACT] JSX

진심스테이크 2019. 1. 2. 18:04

 

JSX : 자바스크립트 확장 문법

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { Component } from 'react';
 
class App extends Component {
  render() {
    return (
      <div>
        
      </div>
    );
  }
}
 
export default App;
cs
- 위와 같이 작성한 코드는 babel-loader를 사용하여 자바스크립트로 변환함
 
장점
- 보기 쉽고 익숙함  -> HTML 코드와 비슷함
 
기본 문법
1. 컴포넌트에 여러 요소가 있다면, 무조건 부모 요소 하나로 감싸야 함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class App extends Component {
  render() {
    return (
      <div>
        <div>
          <h1>Hello React!</h1>
        </div>
        <div>
          <h2>Welcome</h2>
        </div>
      </div>
    );
  }
}
cs
 
- Fragment 사용 : 콘솔창에 <div> 코드가 보이지 않음, 즉 <div> 지옥을 방지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class App extends Component {
  render() {
    return (
      <Fragment>
        <div>
          <h1>Hello React!</h1>
        </div>
        <div>
          <h2>Welcome</h2>
        </div>
      </Fragment>
    );
  }
}
cs
 
2. 자바스크립트 표현
1
2
3
4
5
6
7
8
9
10
class App extends Component {
  render() {
    const name = 'React';
    return (
      <div>
        hello {name}!
      </div>
    );
  }
}
cs

 

3. 조건부 연산자 : 모든 조건부 연산자은 사용 불가능이지만, 아래 2개만 가능 

- 삼항 연산자

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class App extends Component {
  render() {
    return (
      <div>
        {
          3 + 5 === 8 
            ? (<div>정답</div>)
            : (<div>오답</div>)
        }
      </div>
    );
  }
}
cs

 

 - AND 연산자

 

 

1
2
3
4
5
6
7
8
9
10
11
class App extends Component {
  render() {
    return (
      <div>
        {
          3 + 5 === 8 && (<div>정답</div>)
        }
      </div>
    );
  }
}
cs

 

- if문을 사용할 수 없음

  -> JSX 밖에서는 가능

  -> JSX 안에서는 IIFE를 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class App extends Component {
  render() {
    const value = 1;
    return (
      <div>
        {
          (function() {
            if (value === 1return (<div>하나</div>);
            if (value === 2return (<div></div>);
            if (value === 3return (<div></div>);
          })()
        }
      </div>
    );
  }
}
cs
4. CSS / style
- App.css
1
2
3
4
5
6
7
.App {
  background: black;
  color: aqua;
  font-size: 36px;
  padding: 1rem;
  font-weight: 600;
}
cs
 
- App.js
1
2
3
4
5
6
7
8
9
10
11
import './App.css'
 
class App extends Component {
  render() {
    return (
      <div className="App">
        리액트
      </div>
    );
  }
}
cs
- JSX안에서 style 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class App extends Component {
  render() {
    const style = {
      backgroundColor: 'black',
      padding: '16px',
      color: 'white',
      fontSize: '12px'
    };
 
    return (
      <div style={style}>
        hi there
      </div>
    );
  }
}
cs

 

5. class 대신 className 사용

- class 키워드는 이미 자바스크립트에 존재하는 키워드이기 때문

 

6. 주석

1
2
3
4
5
6
7
8
9
10
11
class App extends Component {
  render() {
    return (
      <div>
        {/* 주석은 이렇게 */}
        <h1 // 태그 사이에>
        리액트</h1>
      </div>
    );
  }
}
cs

 

'FRONT-END > REACT' 카테고리의 다른 글

[REACT] STATE  (0) 2019.01.03
[REACT] PROPS  (0) 2019.01.03
[REACT] REDUX  (0) 2018.10.22
[REACT] 기본 설정 및 설치  (0) 2018.10.19
[REACT] BASIC THINGS  (0) 2018.10.15
댓글