코딩애플 강의를 통해 배운 리액트를 정리한 글입니다.
2025년 1월 31일
Part 1 : 블로그 제작 & 기초 문법
#리액트 신버전부터 업데이트가 안되고 있어서 사용을 하지 않는다
npx create-react-app
npm create vite@latest
# 명령어 입력 후 나오는 프로젝트명 및 옵션 선택
# 오류 발생시
Set-ExecutionPolicy Unrestricted
npm install -g npm
npm cache clean --force
#npm create vite@latest인경우
npm run dev
#npx create-react-app인경우
npm start
node_modules: 라이브러리 소스코드public: 데이터파일 이미지파일 등 쓸데없는 파일 보관소 (여기 넣으면 나중에 사이트 발행시 원본 보존가능)package.json: 라이브러리 기록어쩌구.config.js: lint, vite 설정 파일index.html: 메인페이지className="클래스명"
{데이터명}
style={{color: 'red'}}
// -기호 사용 불가
import { useState } from 'react';
let [데이터, 데이터변경함수] = useState(초기값);
/* eslint-disable */
// 파일 최상단에 작성
// 함수 호출
onClick={함수명}
//기능 실행
onClick={() => {실행할 코드}}
let [a, b] = useState(1);
b(2); // state 값 변경 방법
array object 를 변수에 담을 때는 램에 있는 array object값을 담는게 아닌 그것을 가리키는 화살표같은걸 담는거다
그래서 원래 state값은 변경이 되지 않으면 재 렌더링이 안되는데, 화살표가 가리키는 array object값은 바뀌었지만 화살표가 바뀐게 아니기 때문에 화면 재렌더링이 안되는거임
자세한건 javascript reference data type참조
// copy와 기존 글제목 state는 똑같다고 생각하기 때문에 (화살표가 똑같아서) state 변경을 안해줍니다.
let copy = 글제목;
copy[0] = "여자코트 추천";
글제목변경(copy);
//화살표가 달라지는 문법이라 이러면 잘됨
let copy = [...글제목];
copy[0] = "여자코트 추천";
글제목변경(copy);
//모달
<Modal></Modal>;
//모달 컴포넌트
function Modal() {
return (
<div className="modal">
<h4>제목</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
);
}
<></> 와같이 의미없는 태그를 뜻함function APP() {
return (
<>
<div>1</div>
<div>2</div>
</>
);
}
// useState는 작명, set작명 이렇게 적는게 관습입니다
let [변수1, set변수1] = useState(false)
{
변수1 ? 요소 : null
}
=> 이렇게 요소를 show hide시킬 수 있다
{
array.map (function(item, index) {
return (
<div key={index}>{item}</div>
)
}
}
<자식컴포넌트 작명={state}>
function 자식컴포넌트 (props) {
return (
{props.state}
)
}
//부모에서 자식에게만 전송이 가능 (패륜 불륜안됨)
하나의 오브젝트 or 하나의 배열만 보내거나
index도 같이 보내야함
=> 뭐가 좋을지 상황에 맞춰서 사용하자
자식과 부모가 같이쓰는 state라면 부모에 올려놓고 자식이 props로 받아쓰는게 좋다
<자식컴포넌트 작명={state}>
function 자식컴포넌트 (props) {
return (
{props.state}
)
}
//부모에서 자식에게만 전송이 가능 (패륜 불륜안됨)
//값 가져오기
onChange={(e) => {e.target.value}}
e.stopPropagation 사용하면 안퍼짐onClick={(e) => {e.stopPropagation(); ~기능}}
변수.splice(index, 1);
변수.unshift(입력값);
npm run build