관리 메뉴

공부기록용

React입문 1주차(실습 - 카운터 앱/Styling) 본문

📚강의록📚/스파르타)React

React입문 1주차(실습 - 카운터 앱/Styling)

과부하가즈아 2023. 6. 26. 13:18
// src/App.js
import "./App.css";
import { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  const minusBtnClickHandler = () => {
    const newminusCount = count -1;
    setCount(newminusCount);
  }

  const plusBtnClickHandler = () => {
    const newPlusCount = count +1;
    setCount(newPlusCount);
  }

  return (
    <div>
      <div>{count}</div>
      <div>
        <button 
        onClick={minusBtnClickHandler}>-1</button>

        <button onClick={plusBtnClickHandler}>+1</button>
      </div>
    </div>

  );
}
export default App;

// src/App.js
import "./App.css";
import { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <div>{count}</div>
      <div>
        <button
          onClick={() => {
            const newMinusCount = count - 1
            setCount(newMinusCount)
            // setCount(count -1);
          }}>
          -1
        </button>

        <button
          onClick={() => {
            const newPlusCount = count + 1
            setCount(newPlusCount)
            // setCount(count -1);
          }}>
          +1</button>


      </div>
    </div>

  );
}
export default App;


Component Styling

CSS 치트시트

padding
display : flex
    alignItems
    justifyContent
gap
width, height
border
borderRadius

import React from "react";

const App = () => {
  const style = {
    padding: "100px",
    display: "flex",
    gap: "12px",
  };

  const squareStyle = {
    width: "100px",
    height: "100px",
    border: "1px solid green",
    borderRadius: "10px",
		display: "flex",
    alignItems: "center",
    justifyContent: "center",
  };

  return (
    <div style={style}>
      <div style={squareStyle}>감자</div>
      <div style={squareStyle}>고구마</div>
      <div style={squareStyle}>오이</div>
      <div style={squareStyle}>가지</div>
      <div style={squareStyle}>옥수수</div>
    </div>
  );
};

export default App;

컴포넌트 파일에서 CSS 코드 분리하기, JS파일에서 CSS를 별도의 모듈(파일)로 분리해서 사용

// ./src/App.js
import React from "react";
import './App.css';

const App = () => {

  return (
    <div className="app-style">
      <div className="component-style">감자</div>
      <div className="component-style">고구마</div>
      <div className="component-style">오이</div>
      <div className="component-style">가지</div>
      <div className="component-style">옥수수</div>
    </div>
  );
  
};

export default App;

> 컴포넌트 파일에서 className 을 넣어준다. 그리고 이 컴포넌트에서 적용할 CSS 파일을 import 해줄 것. 경로가 무척 중요하니 잘 확인하기

 

/* App.css */ 

.app-style {
  padding: 100px;
  display: flex;
  gap: 12px;
}

.component-style {
  width: 100px;
  height: 100px;
  border: 1px solid green;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}

> 기존 style, squareStyle 변수에 넣어줬던 스타일 프로퍼티들을 별도에 CSS 파일로 옮겨보기

> 기존에는 style을 자바스크립트 객체로 작성했었기 때문에 CSS 프로퍼티의 값을 따옴표(””)로 감싸주었지만 CSS 문법에서는 따옴표, 콤마, css이름등등 css문법에 맞도록 고쳐주어야 한다. 

 

Comments