JavaScript Extension... 쉽게 말해 HTML문법을 JS 코드 내부에 쓴것. JS의 확장 버전이고 결국은 이도 JS라는 점...
React에서 HTML을 표현할 때, JSX를 사용한다. 외관상 HTML같은 마크업 언어를 리터럴로 입력하는 것으로 보이는데, 빌드 시 Babel에 의해 자바스크립트로 변환된다. 자바스크립트 코드를 HTML처럼 표현할 수 있기 때문에 용이한 개발이 가능하다.
즉 JSX는 자바스크립트 안에서 HTML 문법을 사용해서 웹을 구성할 수 있게 도와주는 자바스크립트 문법으로 리액트 개발에 엄청난 도움을 주고 있다.
import React from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
let posts = '강남 고기 맛집'
function app (){
return 100
}
return (
<div className="App">
<div className="black-nav">
<div style={ { color: 'blue', fontSize: '30px' } }>개발 blog</div>
</div>
<img src={logo}/>
{/* 로고이미지 */}
<h4> { app() } </h4>
{/* 100 */}
</div>
);
}
export default App;
useState()
를 이용해 만들어야함import React, { useState } from 'react';
을 명시하는 것을 잊지말자!let [글제목, 글제목변경] = useState(['남자 코트 추천', '여자 코트 추천', '여자 향수 추천']); //array[a, b]생성
버튼을 클릭하면 첫번째 블로그 포스팅의 제목을 "여자 코트 추천"으로 바꿔보자!
/* eslint-disable */
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
let [글제목, 글제목변경] = useState(['남자 코트 추천', '남자 셔츠 추천', '여자 향수 추천']); //array[a, b]생성
function titleChange(){
let newArr = [...글제목]; //복사를 할때는 딥카피를 해야한다.(reference data type의 특징)
newArr[0] = '여자 코트 추천'
글제목변경( newArr )
// 글제목변경(["여자코트추천", 글제목[1], 글제목[2]]);
}
let [따봉, 따봉변경] = useState(0);
let posts = '강남 고기 맛집'
return (
<div className="App">
<div className="black-nav">
<div>개발 blog</div>
</div>
<button onClick={ titleChange }>버튼</button>
<div className="list">
<h3> { 글제목[0] } <span onClick={ ()=>{ (따봉변경(따봉+1)) } }>👍</span> { 따봉 } </h3>
<p>6월 19일 발행</p>
<hr/>
</div>
<div className="list">
<h3> { 글제목[1] } </h3>
<p>6월 19일 발행</p>
<hr/>
</div>
<div className="list">
<h3> { 글제목[2] } </h3>
<p>6월 19일 발행</p>
<hr/>
</div>
</div>
);
}
export default App;
onClick={ ()=>{} }
과 같은 형식으로 속성처럼 넣어준다. 중괄호 안에는 무조건 함수가 들어가야한다.글제목[0] = "여자 코트 추천
과 같은 형식으로 원본 배열의 데이터를 수정할 수 없기에, 딥카피([...글제목]
을 이용, 그냥 글제목을 넣으면 데이터 공유가 된다.)를 통해 새로운 배열의 사본을 만들어야한다.HTML을 한 단어로 줄여서 쓸 수 있는 방법이다.
리액트를 쓰는 중요한 이유 중 하나.
관리가 매우 매우 편해짐.
/* eslint-disable */
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<Modal></Modal>
</div>
);
}
function Modal(){
return (
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
export default App;
/* eslint-disable */
를 상단에 넣으면 워닝 메시지가 뜨지 않는다.