리액트에는 JSX라는 문법이 있다.

 

완전히 HTML과 동일한데(완전히는 아니지만... 거의..) 이것은 실제 자바스크립트에 해당된다고 한다.

 

어쨋거나...

 

JSX를 작성하다보면 당황스럽다...

 

.html 파일에서는 태그명만 입력하면 입력한 문자와 관련된 태그가 뜨고, 엔터만 치면 HTML 태그가 생성됐었는데.

 

JSX에서는 < 부터  /> 까지 전부 입력해줘야하는건가?

 

당황스럽다. 말도안되.  찾아봤다.

 

3초만에 해결하였다.

 

https://medium.com/@afulsamet/vs-code-react-js-tools-d61122dfb923

 

VS-Code React.JS Tools

Code snippets, Autocomplete HTML and more for React.JS

medium.com

 

1. Settings에 들어간다.

 

 

2. settings를 입력하고, 쭉쭉 내리다보면 이미지와 같이 JSON을 볼 수 있다.

그리고, 그 아래 Edit in settings.json을 클립해서 들어간다.

 

 

맨 아래 닫히는 중괄호 위에 }

 

,  를 입력하고

 

"emmet.includeLanguages": {
"javascript": "javascriptreact"
}

 

을 추가해준 뒤, 저장하고 나온다.

 

 

 

 

해결되었다.

 

h1 입력하면 화면에 나온다. 엔터를 치면 자동으로 태그가 생성되는 것을 볼 수 있다.

 

고민 해결!

Posted by sungho88
,

1. VS Code 설정에 들어간다.

 

2. settings.json 파일로 접속한다. 오른쪽 상단에 동그라미 부분 

 

3. 아래와 같이 입력한다

 

JSX에서는 HTML snippet이 적용이 안 되서, 

 

하나하나 직접 작성해야하나?

 

너무 비효율적인데... 에러 많이 날텐데

 

하고 구글하다가 찾은 방법이다.

 

ㅇ ㅑ호 

Posted by sungho88
,

(설명)

JSX는 HTML이나 XML과 매우 비슷하게 생겼다.

하지만, HTML도 아니고 XML도 아니다.

자바스크립트의 확장 문법이다(공식 문법은 아니다)

나중에 babel-loader를 통해 자바스크립트로 변환된다.


(장점)

1. 가독성이 좋다  - 자바스크립트에 비해, JSX를 사용하면 보기 쉽고, 작성하기 쉽다.

2. 오류 검사가 가능하다 - babel-loader에 의해 오류를 감지할 수 있다.

3. 거부감없이, 쉽게 작성할 수 있다 - HTML과 유사하기 때문에 쉽게 작성이 가능하다.


(사용법)

1. 컴포넌트는 반드시 태그 하나로 묶기

- 컴포넌트에 여러 요소가 있으면, 반드시 하나의 태그로 감싸야 한다. 

- 그 이유는 컴포넌트 내부는 DOM 트리 구조 하나로 구성되어야 하기 때문이다.

- <Fragment>로 감싸면, 불필요한 div를 렌더링하는 것을 생략할 수 있다.

2. 자바스크립트 코드 삽입하기

- { 자바스크립트 표현식을 작성하려면 JSX 내부에서 중괄호{ } 안에 작성하면 된다.

3. if문 대신 삼항 연산자

- JSX 내부 자바스크립트 표현식에서 if문 사용 불가하므로 삼항 연산자를 사용할 것.

4. class 대신 className 사용

- class를 작성하면 경고 발생. class는 이미 존재하는 키워드이기 때문. className을 사용할 것.

5. 태그는 반드시 닫아야 한다.

- <br>, <input> 등의 태그는 HTML에서 닫지 않아도 작동했다. 

- 하지만, 리액트 JSX에서는 반드시 <br /> 또는 <br></br>과 같이 닫아야 오류가 발생하지 않는다.

6. 주석

- 주석은 { */ 주석임... */ } 으로 작성한다.

- 또는 주석 단축키(Ctrl + /)으로 주석을 하면 좀 더 편리하다.

- 흔히 알고 있는 // 나 /* */ 이 주석을 하게 되면 텍스트로 인식되어 그대로 화면에 표시된다.

7. &&을 사용한 조건부 렌더링

- 삼항 연산자를 쓰면 참일때 A화면 출력 거짓일때 B화면 출력을 했다.

- 하지만, 특정 조건을 만족하지 않을 때 아예 화면을 보여주고 싶지 않다면 어떻게 할까?

-  {condition ? '참이에요' : null} 과 같이 삼항연산자를 사용해도 되지만,

- {condition && '보여주세요'} 와 같이 작성해도 된다.

- 쉽다. 앞 condition이 참이면 뒤 '보여주세요'가 나오겠지만, 거짓이면 뒤에는 체크하지 않는다.


8. 인라인 스타일링 

-  CSS 스타일을 자바스크립트 객체 형식으로 생성하여 적용한다.

- 해당 키는 camelCase 형식을 사용한다.


위에 다음과 같이 선언.

const style {

backgroundColor : 'black',

border : 1px solid 'yellow'

...


사용시에는 다음과 같이 적용.

<div style={style}>BODY</div>


Posted by sungho88
,

HTML 작성시에는 워낙 잘 되서 필요가 없다.


하지만, 리액트에서 JSX파일을 수정할 때는 자동완성이 안되서 난감했다.


태그를 일일히 다 작성하고, 끝 태그(</..>)까지 일일히 맞춰줘야한다니...말도 안된다.


JSX에서 HTML을 작성할 수 있는 방법을 찾다가 못 찾았다.


대신, 자동으로 끝 태그를 생성해주는 패키지는 찾았다.


이름은 너무나 쉽다.


Auto Close Tag


이다.


이것을 패키지 창을 열고(왼쪽 수직으로 정렬된 항목 중 가장 마지막 네모)



이것을 누른 후, Search Extensions...


에다가 입력한다.


그리고 선택 후, Install 고고~


그 다음 Reload한 뒤 해보면 적용이 된다!




Posted by sungho88
,

리액트를 설치하면, 기본 파일이 생성된다.


App.js가 루트 컴포넌트이다.


이 파일에는 다음과 같이 작성되어 있다.


import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';


class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}


export default App;




 

여기서, render 함수 안에 return 안ㅔ html로 생긴 이것이 바로 JSX 코드이다.


<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>


JSX 코드는 리액트 컴포넌트를 만들때 사용하는 언어이다.


.js로 파일을 생성하면, render() 에서 태그가 자동완성 되지 않아 고생이 많았다.


알고봤더니, React에서는 .jsx로 작성해야한다.


이렇게 하면, HTML 자동 완성이 된다.


하지만, 반전이 있다.


HTML 문법이지만, HTML이 아니다. 이것은 자바스크립트이다. 


리액트에서 빌드시, 고쳐준다고 한다. 고맙다.


JSX파일


다만, jsx보다는 js로  주로 사용된다.

Posted by sungho88
,