React

 

따라하며 배우는 리액트 A-Z

 


[프론트엔드, 웹 개발] 강의입니다.

이 강의를 통해 리액트 기초부터 중급까지 배우게 됩니다. 하나의 강의로 개념도 익히고 실습도 하며, 리액트를 위해 필요한 대부분의 지식을 한번에 습득할 수 있도록 만들었습니다.

✍️
이런 걸
배워요!

리액트

NextJS

타입스크립트

정적 사이트 자동 배포

도커

 

강의:  https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8#

 

강의 자료 :  https://github.com/braverokmc79/DiagramPDF

 

소스 : 

https://github.com/braverokmc79/react-button-app

 

 

 

 

 

[6].  React TDD 를 이용한 간단한 앱 생성 및 배포

 

 

66.TDD를 이용해서 만들 앱 소개

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119911?tab=curriculum

 

 

 

 

 

 

 

 

 

 

67.앱 만들기 시작

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119912?tab=curriculum

 

 

 

App.test.js

 

import { render, screen } from '@testing-library/react';
import App from './App';

test('the counter start 0', () => {
  render(<App />);
  const counterElement =screen.getByTestId("counter");
  expect(counterElement).toHaveTextContent(0);
});

 

 

App.js

import logo from './logo.svg';
import './App.css';
import { useState } from 'react';

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

  return (
    <div className="App">
      <header className="App-header">
        <h3 data-testid="counter">{count}</h3>
      </header>
    </div>
  );
}

export default App;

 

 

 

 

 

 

 

 

 

 

 

68.플러스, 마이너스 버튼 생성

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119913?tab=curriculum

 

 

 

App.test.js

 

import { render, screen } from '@testing-library/react';
import App from './App';

test('minus button has correct text',  ()=>{
  render(<App /> );
  const buttontElement =screen.getByTestId("minus-button");
  expect(buttontElement).toHaveTextContent("-")
});


test('plus button has correct text', ()=>{
  render(<App />);
  const buttontElement =screen.getByTestId("plus-button");
  expect(buttontElement).toHaveTextContent("+");
})

 

 

 

 

 

App.js

import './App.css';
import { useState } from 'react';

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

  return (
    <div className="App">
      <header className="App-header">
        <h3 data-testid="counter">{count}</h3>
        <button data-testid="minus-button">-</button>
        <button data-testid="plus-button">+</button>
      </header>
    </div>
  );
}




export default App;

 

 

 

 

 

 

 

 

 

 

 

 

69.플러스, 마이너스 버튼 기능 넣기(fire event)

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119914?tab=curriculum

 

 

 

 

 

 

 

App.test.js

~
test('When the + button is pressed, the counter changes to 1', ()=>{
  render(<App />);
  const buttontElement =screen.getByTestId("plus-button");
  fireEvent.click(buttontElement);

  const counterElement =screen.getByTestId("counter");
  expect(counterElement).toHaveTextContent(1);
});

 

 

App.js

import './App.css';
import { useState } from 'react';

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

  return (
    <div className="App">
      <header className="App-header">
        <h3 data-testid="counter">{count}</h3>
        <button data-testid="minus-button" onClick={()=>setCount((count)=>count-1)}>-</button>
        <button data-testid="plus-button" onClick={()=>setCount((count)=>count+1)}>+</button>
      </header>
    </div>
  );
}

export default App;

 

 

 

 

 

 

 

 

 

 

 

 

70.on/off 버튼 만들기(toHaveStyle)

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119915?tab=curriculum

 

 

App.test.js

test("on/off button has blue color", ()=>{
  render(<App />);
  const buttontElement =screen.getByTestId("on/off-button");
  expect(buttontElement).toHaveStyle({backgroundColor : "blue"});
});

 

App.js

import './App.css';
import { useState } from 'react';

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

  return (
    <div className="App">
      <header className="App-header">
        <h3 data-testid="counter">{count}</h3>
        <button data-testid="minus-button" onClick={()=>setCount((count)=>count-1)}>-</button>
        <button data-testid="plus-button" onClick={()=>setCount((count)=>count+1)}>+</button>
        <div><button data-testid="on/off-button"    style={{backgroundColor:"blue"}}>on/off</button></div>
        
      </header>
    </div>
  );
}

export default App;

 

 

 

 

 

 

 

 

 

 

 

 

71.on/off 버튼 클릭 시 버튼 disabled

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119916?tab=curriculum

 

 

App.test.js

test("Prevent the -, + button from being pressed when the on/off button is clicked", ()=>{
  render(<App />);
  const onOffButtonElement =screen.getByTestId("on/off-button");
  fireEvent.click(onOffButtonElement);
  const plusButtonElement=screen.getByTestId("plus-button");
  expect(plusButtonElement).toBeDisabled();
})

 

 

App.js

import './App.css';
import { useState } from 'react';

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

  return (
    <div className="App">
      <header className="App-header">
        <h3 data-testid="counter">{count}</h3>
        <div>
          <button data-testid="minus-button" onClick={()=>setCount((count)=>count-1)} disabled={disabled}>-</button>
          <button data-testid="plus-button" onClick={()=>setCount((count)=>count+1)}  disabled={disabled}>+</button>
        </div>
        <div><button data-testid="on/off-button" onClick={()=>setDisabled(prev=>!prev)}   style={{backgroundColor:"#1393bf"}}>on/off</button></div>
        
      </header>
    </div>
  );
}

export default App;

 

 

 

 

 

 

 

 

72.Github Action을 이용한 AWS S3로 앱 자동 배포하기

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119917?tab=curriculum

 

 

 

 

 

 

 

73.앱 배포를 위한 AWS S3 버킷 생성하기

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119918?tab=curriculum

 

 

 

 

 

 

74.AWS S3 버킷 설정 및 애플리케이션 배포하기

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119919?tab=curriculum

 

 

 

 

 

 

 

75.S3로 앱 자동 배포를 위한 yml 파일 완성하기

 

강의:

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A6%AC%EC%95%A1%ED%8A%B8/unit/119920?tab=curriculum

 

 

 

 

 

 

 

 

 

 

 

 

 

리액트

 

about author

PHRASE

Level 60  라이트

모든 장애물이 곧 기회라는 것을 명심하고 장애물을 찾자. -로버트 H. 슐러

댓글 ( 4)

댓글 남기기

작성