React

JSX(JavaScript + XML)

nminy 2023. 4. 14. 22:05

HTML을 품은 JS ⇒ JSX!

JavaScript를 확장한 문법

JavaScript의 모든 기능이 포함되어 있으며, React Element를 생성하기 위한 문법

// import [패키지명] from [경로] 이 형식으로 불러와요.
import React from 'react'; 
// js 파일 뿐 아니라 이미지도 가능가능!
import logo from './logo.svg';
// css? 가능!
import './App.css';

function App() {
  return (
    <div>
      리액트에서는 딱 하나의 html 파일만 존재한다.
      (public 폴더 아래에 있는 index.html)
    </div>
  );
}

export default App;

지켜야할 것!

- 태그는 꼭 닫아주기 <input />

- 무조건 1개의 엘리먼트를 반환하기

return (
    <div className="App">
      <p>안녕하세요! 리액트 반입니다 :)</p>
      <input type='text'/>
    </div>
  );

- JSX에서 javascript 값을 가져오려면? 중괄호!!!

(값을 가져올 때 뿐만 아니라, map, 삼항연산자 등 자바스크립트 문법을 JSX 안에 쓸 때도 {}를 이용)

function App() {
	const cat_name = 'perl';
    const number = 1;
  return (
    <>
    <div>hello {cat_name}!</div>
    <p>안녕하세요! 리액트 반입니다 :)</p>
     {/* JSX 내에서 코드 주석은 이렇게 씁니다 :) */}
     {/* 삼항 연산자를 사용했어요 */}
     <p>{number > 10 ? number+'은 10보다 크다': number+'은 10보다 작다'}</p>
     < />
  );
}

- class 대신 className!

- 인라인으로 style 주기

// 중괄호를 두 번 쓰는 이유? 객체도 자바스크립트니까요!
// 이렇게 쓰거나,
<p style={{color: 'orange', fontSize: '20px'}}>orange</p>

//혹은 스타일 객체를 변수로 만들고 쓸 수 있어요!
function App() {
  const styles = {
    color: 'orange',
    fontSize: '20px'
  };

  return (
    <div className="App">
      <p style={styles}>orange</p>
    </div>
  );
}

// 위와 같은내용

 

JSX식에는 부모 요소가 하나 있어야 됨 =>

태그로 하나 묶어줘야 함(빈 태그도 가능, 크롬 브라우저에서는 해석 안함)
import React from 'react';

// 자식 컴포넌트
function Child() {
  return <div>나는 딸입니다.</div>
}

// 부모 컴포넌트
function App() {
  return (
    <>
    <Child/>
    <Child/>
    <Child/>
    </>
  )
}
export default App;

👻컴포넌트 이름은 대문자로 시작

import React from 'react';

function Child() {
  return <div>자식</div>
}

function Mother() {
  return <Child/>
}

function Grandfather() {
  return <Mother/>
}

function App() {
  return <Grandfather/>
}
export default App;

App.js에서

rfc : export default 같이 들어감

import React from 'react'

export default function App() {
  return (
    <div>App</div>
  )
}

rfce : function키워드 들어감

import React from 'react'

function App() {
  return (
    <div>App</div>
  )
}

export default App

태그 닫아주기 <~~~~~~~/>

최상위 태그는 하나만! 태그를 하나 더 만들거면 전체를 감싸는 최상위 태그를 만들 것

 

import React from 'react'

function App() {

  let a = 1;
  let b = 2;

  let style1 = {
    color: 'green'
  }

  return (
    <div>
      <p style={style1}>안녕하세요</p>
      <p>{a + b < 10 ? 'true' : 'false'}</p>
    </div>
  )
}

export default App

class 대신 className!

중괄호를 두 번 쓰는 이유 : 객체도 JS

스타일 객체를 변수로 만들고 쓸 수 있음