해당폴더 마우스 우클릭 + powershall
- npx create-react-app "프로젝트명"
미리보기 띄우기
- 터미널에서 npm start
프로젝트 파일 설명
리액트에서 jsx 사용한다.
-jsx: .js파일에서 쓰는 html 대용품
className
이라고 써야 한다. {중괄호}
= 데이터바인딩이라고 부른다. style={{스타일명: '값'}}
(참고) 에러메세지는 터미널/브라우저에서 확인 또는 개발자도구에서 확인한다.
import logo from './logo.svg';
import './App.css';
function App() {
let post = '강남 우동 맛집';
return (
<div className="App">
<div className="black-nav">
<h4>블로그임</h4>
</div>
<h4 style={{color : 'red', fontSize : '16px'}}>{ post }</h4>
</div>
);
}
export default App;
useState
import { useState } from 'react';
function App() {
let post = '강남 우동 맛집';
let [글제목, b] = useState('남자 코트 추천');
Destructuring 문법
array 자료를 변수로 빼는 문법
let num = [1, 2];
// let a = num [0];
// let c = num [1];
// Destructuring
let [a, c ] = [1, 2];
자주 변경될 것 같은 html 부분은 state로 만들어놓기
onClick={}
안엔 함상 함수이름을 넣어야 한다. ()=> {}
state변경함수(새로운state)
let post = '강남 우동 맛집';
let [글제목, b] = useState(['남자 코트 추천', '강남 우동맛집', '파이썬독학']);
let [따봉, 따봉변경] = useState(0);
return (
<div className="App">
<div className="black-nav">
<h4>ReactBlog</h4>
</div>
<div className='list'>
<h4>{ 글제목[0] } <span onClick={ ()=> { 따봉변경(따봉+1)} }> 💗 </span> { 따봉 } </h4>
<p>2월 17일 발행</p>
</div>
<button onClick={()=> {
let copy = [...글제목];
copy[0] = '여자코트 추천';
글제목변경(copy);
}}> 글수정 </button>
state 변경함수 특징
기존 state== 신규state의 경우 변경해주지 않는다.
array/object 특징
array/object 담은 변수엔 화살표만 저장된다. ([1,2,3]이 어디에 있는지 가리키는 화살표만)
reference data 라서 그렇다.
[...글제목]; 을 쓰면 새로운 state로 생각한다. 새로운 배열
기존 state가 array나 object면 독립적 카피본을 만들어서 수정해야 한다. => shallow copy
<함수명></함수명>
쓰기 또는 <함수명/>
도 가능하다. (참고) return() 안에 병렬기입하려면
의미 없는 <div>
대신에 <></>
사용가능하다.
<Modal></Modal>
<h4 style={{color : 'red', fontSize : '16px'}}>{ post }</h4>
</div>
);
}
function Modal(){
return (
<div className='modal'>
<h4>제목</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
let Modal = () => {
return (
<div></div>
)