⚽️ 기본개념

JSX : 내부적으로 XML/HTML 코드를 자바스크립트로 변환하는 과정을 거침

react의 createElement()라는 함수를 통해서 JSX 코드를 자바스크립트 코드로 변환하는 역할을 해줌 

 

props : 컴포넌트 하위 구성인 엘리먼트들의 세부적인 내용( 다 다름 ) ex. image:"~.jpg" color: "#d~" title: "~"

컴포넌트에 전달할 다양한 정보를 담고 있는 자바스크립트 객체 

 

컴포넌트 : 타입은 세가지 컴포넌트, 함수 컴포넌트, 클래스 컴포넌트 세가지 존재 - tmi : 클래스 컴포넌트가 사용하기 불편하여 잘 사용 x, 함수 컴포넌트를 개선해서 사용하다가 그 과정에서 개발된 훅을 주로 사용함 

- 컴포넌트의 이름은 항상 대문자로 시작해야 함 

 

useState() : state 사용하기 위한 훅

const [변수명, set함수명] = useState(초깃값);

 

react-router-dom : 리액트를 위한 라우팅 라이브러리 

사용자가 원하는 경로로 보내는 과정 

// /places로 접속하면 PlacePage 컴포넌트가 /games로 접속하면 GamePage 컴포넌트가 나옴 
<BrowserRouter>
	<Routes>
    	<Route index element={<MainPage />} />
        <Route path="places" element={<PlacePage />} />
        <Route path="games" element={<GamePage />} />
    </Routes>
</BrowserRouter>

 


🏀 함수 

tick() 함수 

현재시간을 포함하고 있는 엘리먼트 생성하여 root div에 렌더링하는 역할 

setInterval() 함수

js의 tick()함수를 매초 호출하고 있는 함수 

 


🏈 코드

//clock.js
//시계 만들기 코드
import React from "react";

function Clock(props){
	return (
    	<div>
        	<h1>안녕, 리액트!</h1>
            <h2>현재 시간 : {new Date().toLocaleTimeString()}</h2>
        </div>
    );
}

export default Clock;

# 코드설명 : 루트 폴더 내에 Clock.jsx의 이름의 파일에 Clock이라는 이름의 리액트 함수 컴포넌트 생성 후 작성 

 

//index.js <- Clock 컴포넌트 사용
import Clock from './components/Clock';

setInterval() => {
	ReactDOM.render(
    <React.StrictMode>
    	<Clock />
    </React.StrictMode>,
    document.getElementById('root')
    );
}, 1000);

reportWebVitals();

# 코드설명 : setInterval()함수 사용해 1,000ms(1초)마다 새롭게 Clock 컴포넌트를 root div에 렌더링

 

 

'개발 > react' 카테고리의 다른 글

[reactJS] tuk-oj  (0) 2023.03.30
[reactJS] 영화 웹 서비스 만들기  (0) 2023.03.29

$ create-react-app tuk-oj

$ cd react-tuk-oj

$ npm start 

 

size error로 이렇게 변경

 

'개발 > react' 카테고리의 다른 글

react.js  (0) 2023.04.03
[reactJS] 영화 웹 서비스 만들기  (0) 2023.03.29

- React JS는 UI를 interactive하게 만들어줌

 

나는 이거보고 환경구축해볼거임

https://looplian.tistory.com/entry/MacOs%EC%97%90%EC%84%9C-nodejs-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-with-VS-Code

 

MacOs에서 node.js 개발 환경 구축하기. with VS Code

1. 우선 MacOs 에서 node.js 를 설치한다. https://looplian.tistory.com/entry/MacOs-%EC%97%90%EC%84%9C-nodejs-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-homebrew MacOs 에서 node.js 설치하기 homebrew Homebrew가 설치되어 있을 때의 방법. 터

looplian.tistory.com

 

movie/index.html

! 단축키로 내용 시작

오타가 있어도 아무도 알려주지 않기에 꼼꼼히 작성해야할듯

★ 벡틱은 맥북 기준 option+₩ 

<!DOCTYPE html>
<html>
	//2. 자바스크립트에서 가져온다
    <body>
        <span>Total clicks: 0</span>
        <button id="btn">Click me</button>
    </body>
    
    <script>
        let counter = 0;
        const button = document.getElementById("btn");
        const span = document.querySelector("span");
        function handleClick(){
            counter = counter + 1;	//데이터업데이트
            span.innerText = `Total clicks: ${counter}`;	//여기서 따옴표 아닌 벡틱임
        }
        button.addEventListener("click", handleClick)	//이벤트감지
    </script>
</html>
//2. 자바스크립트에서 가져온다 Total clicks: 0

템플릿 리터럴 기능 

1. 백틱(`)으로 템플릿 리터럴을 사용하면, 줄바꿈 등을 쉽게 표현 가능 → ""로는 안됨

2. ${ } 사이에 변수나 연산 등을 삽입 가능


react JS element 

html 사용하지 않고 js와 reactJS로만 코드 작성

=> 개발자들이 작업하는 방식은 아님

<!DOCTYPE html>
<html lang="en">
<head>
</head>
    <body>
        <div id="root"></div>
    </body>
    <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
    <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
    <script>
        const root = document.getElementById("root");
        //span은 생성되어있지만 화면에는 보이지 않기 떼문에 body안에 작성해주어야함
        const span = React.createElement(
            "span", 
            {id:"sexy-span", style : {color: "red"}}, 
            "Hello I'm a span");   //생성하고자 하는 html태그이름과 같아야함
        ReactDOM.render(span, root);
    </script>
</html>

결과

<!DOCTYPE html>
<html lang="en">
<head>
</head>
    <body>
        <div id="root"></div>
    </body>
    <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
    <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
    <script>
        //아직 필요가 없을 때는 null을 둔다
        const root = document.getElementById("root");
        //span을 h3로 바꿈으로써 
        const span = React.createElement("h3", null, "Hello I'm a span")
        const btn = React.createElement("button", null, "Click me"); 
        const container = React.createElement("div", null, [span, btn]);
        ReactDOM.render(container, root); //btn 렌더링
    </script>
</html>

span을 h3로 바꿈으로써 한줄에 둘다 기입되 있던걸 이렇게 바꿀 수 있음

→위 과정까지 해서 2개의 component를 가지는 component를 생성한거임 

 

코드는 이렇게 작성할거지만 createElement를 쓸일은 없다 react 쓰니까 

<!DOCTYPE html>
<html lang="en">
<head>
</head>
    <body>
        <div id="root"></div>
    </body>
    <!-- reactJS, reactDOM 설치한거임 -->
    <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
    <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
    <script>
        //아직 필요가 없을 때는 null을 둔다
        const root = document.getElementById("root");
        //span을 h3로 바꿈으로써 
        const span = React.createElement(
            "h3",   //header3
            //reatJS에서는 아래 코드들 쓸 일 없음 creatElement자체 안씀
            //property  
            {
                id: "title",
                onMouseEnter: () => console.log("mouse enter"),
            }, 
            //content
            "Hello I'm a span"
        );
        const btn = React.createElement(
            "button",
            {
                onClick: () => console.log("im clicked"),
                //
                style: {
                    backgroundColor:"tomato",
                    

                }
            },
            "Click me"
        ); 
        const container = React.createElement("div", null, [span, btn]);
        ReactDOM.render(container, root); //btn 렌더링 : react element들을 root div안에서 보여줘라
    </script>
</html>

😀JSX : JavaScript를 화장한 문법 → 생김새 html이랑 비슷

1 5 JSX 3:17 부터 다시하면 됨 

 

'개발 > react' 카테고리의 다른 글

react.js  (0) 2023.04.03
[reactJS] tuk-oj  (0) 2023.03.30

1. 도커설치

https://docs.docker.com/machine/install-machine/

 

Docker Desktop

 

docs.docker.com

2. docker-compose 

 

 

 

 

 

참고자료 

https://velog.io/@ckstn0777/12%EC%9E%A5.-Docker-Compose

 

12장. Docker-Compose

💻 Microsoft Docker Compose 사용여러 개의 컨테이너가 하나의 애플리키에션으로 동작할 때 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. 예를 들어 웹 애플리케이션을 테스트하려면 웹

velog.io

 

더보기

$ sudo npm install 

했는데 에러남 

 

node gyp는 vs build tools에 의존해서 이에 대한 셋팅 필요함

 

$ npm install -g node-gyp

'개발 > 졸작' 카테고리의 다른 글

[react] select button  (0) 2023.05.12
가상환경없이 OnlineJudge 커스터마이징  (0) 2023.02.09
real-project 과정  (0) 2023.02.06
참고자료  (0) 2023.02.06
自己開發  (0) 2023.01.25

1. node.js , npm 깔려있음

2. npm 캐시 지우기 

$ npm cache clean --force 

$ npm cache verify

방법 두가진데 첫번째껀 모든 캐시 다 지우는거라 무서워서 비교적 안정적인 가비지 데이터 수집해서 무결성 확인해주는 작업만 해줌 

 

마저 하고 작성하기 

 

[깃 통해서 README.md파일 수정]

git clone 해주고 README.md파일 수정 직접함
git 상태 명령어로 수정한파일 확인
명령어 두번 사용으로 인해 세미콜론으로 구분해주고 커밋

실제 깃 서버에는 반영이 되지 않음 -> push까지 해주어야 git에 반영됨

git log 명령어로 로그 확인
README.md 파일 수정된거 반영됨

=> 이제 OnlineJudge/OnlineJudgeFE 파일 내 소스코드 수정후 push를 똑같이 계속 해주면 반영이 될거임 

#push

$ git remote set-url origin https://mynameisumin@github.com/mynameisumin/TUK_oj.git

$ git push -u origin master

#npm

$ sudo npm install //여기서 오류남 샹 왜? -> 에러포스팅

#push 에러 시 참고한 자료 https://dev.classmethod.jp/articles/resolving-github-token-authentication-errors/

push 에러났을 때 저렇게 해결해줌

 

 

'개발 > 졸작' 카테고리의 다른 글

[react] select button  (0) 2023.05.12
npm-gyp 에러  (0) 2023.02.14
real-project 과정  (0) 2023.02.06
참고자료  (0) 2023.02.06
自己開發  (0) 2023.01.25

https://cron-tab.github.io/2018/03/16/js-react/js-react-tailwind/

 

리엑트/뷰 프로젝트에서 테일윈드 CSS 적용하기 (React/Vue + Tailwind CSS)

UI 프레임워크 몇 가지를 써봤는데 결국 커스텀하는 부분에서 어려움을 많이 겪었습니다.그러던 가운데 Tailwind CSS를 알게 되어 써보니 미리 정의되어 있는 클래스 이름만 사용하면 되기 때문에

cron-tab.github.io

 

'개발 > vue' 카테고리의 다른 글

Vue.js  (0) 2023.02.03
Vue.js 설치 실행  (0) 2023.02.02
크롬 앱 만들기 (노마드코더)  (0) 2023.01.30
JS-HTML  (0) 2023.01.25

#최적화하기
  파일크기를 최소화하기 위해서 purge 사용 → 프로덕션으로 빌드할 때 여기에 설정된 파일에서 사용되지 않는 모든 클래스는 제거됨 

//tailwind.config.js
module.exports = {
	purge: ['.?src/**/*.{js,jsx,ts,tsx}'],
    ...
}

[자주 사용할 문법]

w-12 높이 12

h-10 넓이 10

text-white 

bg-gray-400 백그라운드 회색 400

text-blue-200 텍스트 파랑 200

 

#크기

‘sm’ : ‘640px’ //@media(min-width: 640px)

‘md’ : 768px’ //@media(min-width: 768px)

‘lg’ : ‘1024px’ //@media(min-width: 1025px)

‘xl’ : ‘1280px’ //@media(min-width: 1280px)

‘2xl’ : ‘1536px’ //@media(min-width: 1536px)

 

#여백

p-3 (전체 방향 3간격)

px-3 (가로축 방향 3간격)

py-3 (세로축 방향 3간격)

pr-3 (오른쪽 3간격)

pl-3 (왼쪽 3간격)

pt-3 (위 3간격)

pb-3 (아래 3간격)

 

m-3 (전체 방향 3간격)

mx-3 (가로축 방향 3간격)

my-3 (세로축 방향 3간격)

mr-3 (오른쪽 3간격)

ml3 (왼쪽 3간격)

mt-3 (위 3간격)

mb-3 (아래 3간격)

 

#폰트

폰트 패밀리 : font- : sans, serif, mono

폰트 크기 : font- : xs, sm, base, lg, lx, 2xl, 3xl .....

폰트 웨이트 font- : thin, light, normal, semibold, bold

 

#모서리라운드

<div class=“rounded …”></div>

<div class=“round-md …”></div>

<div class=“round-lg …”></div>

<div class=“round-full …”></div>

 

#마우스오버

hover : ‘설정할내용

+ Recent posts