Jsx

1.JSX란? JSX (Javascript XML)는 Javascript에 XML을 추가한 확장 문법이다. JSX는 리액트로 프로젝트를 개발할 때 사용되므로 공식적인 자바스크립트 문법은 아니다. 브라우저는 JSX 문법을 이해하지 못하기 때문에 브라우저에서 실행하기 전에 Babel을 사용하여 일반 자바스크립트 형태의 코드로 변환된다.

JSX는 하나의 파일에 자바스크립트와 HTML을 동시에 작성하여 편리하다.

EX)

// 실제 작성할 JSX 예시
function App() {
	return (
      <h1>Hello, Daejun!</h1>
    );
}

// 위와 같이 작성하면, 바벨이 다음과 같이 자바스크립트로 해석하여 준다.
function App() {
	return React.createElement("h1", null, "Hello, Daejun!");
}

2.JSX 문법

[!NOTE] > 1. 반드시 부모 요소 하나가 감싸는 형태여야 한다

Virtual DOM 에서 컴포넌트 변화를 감지할 때 효율적으로 비교할 수 있도록 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 한다는 규칙이 있기 떄문이다.

EX) 에러 케이스

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

[!NOTE] 2. 자바스크립트 표현식

JSX 안에서도 자바스크립트 표현식을 사용할 수 있다. 자바스크립트 표현식을 작성하려면 JSX내부에서 코드를 {}로 감싸주면 된다.

[!NOTE] 3. if문(for문) 대신 삼항 연산자(조건부 연산자) 사용

if문과 for문은 JavaScript 표현식이 아니기 때문에 JSX 내부 자바스크립트 현식에는 사용할 수 없다.
그렇기 때문에 조건부에 따라 다른 렌더링 시 JSX 주변 코드에서 if문을 사용하거나, {}안에서 삼항연사자를 사용해야 한다.

EX) 방법 1. 외부에서 사용

function App() {
let desc = "";
const loginYn = 'Y';
  if(loginYn === 'Y') {
    desc = <div>Daejun 입니다. </div>;
  }else{
    desc = <div>비회원 입니다. </div>;
  }
  return(
    {desc}
  )
}

EX) 방법 2. 삼항 연산자 사용

function App() {
  const loginYn = 'Y';
  return (
    <>
      <div>
        {loginYn === 'Y' ? (
          <div>Daejun 입니다. </div>
        ):(
          <div>비회원 입니다. </div>
        )}
      </div>
    </>
  );
}

EX) 방법 3. 즉시 실행 함수 사용

function App(){
  const loginYn = 'Y';
  return (
    <>
      {
        (() => {
          if(loginYn === "Y"){
            return(<div>Daejun 입니다. </div>);
          }else{
            return(<div>비회원 입니다. </div>);
          }
        })()
      }
    </>
  )
}

[!NOTE] 4. React DOM은 HTML 어트리뷰트 이름 대신 camelCase를 사용한다.

JSX 스타일링 - JSX에서 자바스크립트 문법을 쓰려면 {}를 써야 하기 때문에, 스타일을 적용할 때에도 객체 형태로 넣어 주어야 한다. 카멜케이스를 작성해야 한다. ex) font-size => fontSize

function App() { 
  const style = { 
    backgroundColor: 'green',
    fontSize: '12px' 
  } 
  return ( 
    <div style={style}>Hello, Daejun</div> 
  );
}

This line appears after every note.

Notes mentioning this note


Here are all the notes in this garden, along with their links, visualized as a graph.

ReadmeTips설명자료 모음나의 유의 사항과 고치고자 했던점Throw error기능 목록제출용 소감문회고록1주차 피드백BoardStyle guide checklist기능 요구 사항 숫자 야구입출력 요구 사항제출용 소감문 숫자 야구 게임프로그래밍 요구 사항회고록기능 목록요구 사항제출용 소감문 자동차 경주 게임회고록Todo'기능 목록제출용 소감문 크리스마스 프로모션회고록Scpc몰입해본 경험성공한 프로젝트들1. 효과적인 학습 방식과 경험2. 성장 중 겪은 실패와 극복3. 오랜 시간 몰입했던 경험 그리고 도전4. 원하는 프로그래머 모습우테코 증빙자료효과적인 학습 방법과 결과프론트엔드 기말과제 리팩토링CssDiv에 그림자 효과 넣기FlexBabelBigintBooleanClassIife(즉시 실행 함수 표현식)Javascript style guideJavascript typesJavascriptLinked list(연결 리스트)MapMark and sweepNull typeNumberObject ForeachObject.defineproperty()ObjectPromiseReference countingSetShift 연산String.indexof(), string.includes()StringSymbolUndefined typeV8 가비지 컬렉션Async 와 awaitCall 과 apply 메서드Callback 함수Private 프로퍼티SomeThrowWrapper object가비지 컬렉션객체의 attribute기본 매개변수 문법데이터 속성메모리 관리메모리 생명 주기배열생성자(constructor)원시값접근자 속성함수 호이스팅(hoisting)함수(function)함수를 정의하는 법함수와 메소드의 차이힙과 스택Class component(클래스형 컴포넌트)DomFunction component(함수형 컴포넌트)JsxReact domReact elementReact hooksReact 생명주기ReactSpaVirtual domPropsUseeffect렌더링리렌더링마운트함수형 컴포넌트와 클래스형 컴포넌트의 차이점Github page로 배포GithubReadme 파일 작성CloneFork커밋 메시지 작성 규칙Brain stormingWeb3마이너스마트 컨트랙트페이로드(payload)Markdown(md)MermaidMvc 패턴도메인 로직비즈니스 로직Jest란Tdd(테스트 주도 개발)모킹(mocking)이란스파이(spying)이란AbiDtdNode jsReadmeThreadXml런타임 환경스키마유클리드 호제법최대공배수 알고리즘Todo list옵시디언 웹 주소