따라하며 배우는 리액트 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.dev/braverokmc79/react-todo-app
[2].간단한 To-Do 앱 만들며 리액트 익히기
1.Create React App으로 실행된 리액트의 기본 구조 살펴보기
강의:
2.React App 실행해보기
강의:
3.SPA 란?
4.To-Do 앱 소개 및 JSX 알아보기
5.To-Do 앱 만들기 시작
App.js
import React, { Component, component } from "react"; import "./App.css"; export default class App extends Component { render() { return (
할일 목록
) } }
6.할 일 목록 UI 만들기(JSX, CSS 작성)
강의:
App.js
import React, { Component, component } from "react"; import "./App.css"; export default class App extends Component { btnStyle = { color: "#fff", border: "none", padding: "5px 9px", borderRadius: "50%", cursor: "pointer", float: "right" } getStyle = () => { return { padding: "10px", borderBottom: "1px #ccc dotted", textDecoration: "none" } } render() { return (
할일 목록
) } }
7.Map 메소드를 사용한 할 일 목록 나열
강의:
App.js
import React, { Component } from "react"; import "./App.css"; export default class App extends Component { btnStyle = { color: "#fff", border: "none", padding: "5px 9px", borderRadius: "50%", cursor: "pointer", float: "right" } getStyle = () => { return { padding: "10px", borderBottom: "1px #ccc dotted", textDecoration: "none" } } todoData = [{ id: "1", title: "공부하기", completed: false, }, { id: "2", title: "청소하기", completed: true } ] render() { return (
할일 목록
) } }
8.JSX Key 속성 이해하기
강의:
9.Filter 메소드를 사용해서 할 일 목록 지우기
강의:
App.js
import React, { Component } from "react"; import "./App.css"; export default class App extends Component { btnStyle = { color: "#fff", border: "none", padding: "5px 9px", borderRadius: "50%", cursor: "pointer", float: "right" } getStyle = () => { return { padding: "10px", borderBottom: "1px #ccc dotted", textDecoration: "none" } } todoData = [{ id: "1", title: "공부하기", completed: false, }, { id: "2", title: "청소하기", completed: true } ] handleClick = (id) => { let newTodoData = this.todoData.filter(data => data.id !== id); console.log(" newTodoData : ", newTodoData); } render() { return (
할일 목록
) } }
10.React State 란?
강의:
App.js
~ state = { todoData: [{ id: "1", title: "공부하기", completed: false, }, { id: "2", title: "청소하기", completed: true } ], value: "" } handleClick = (id) => { let newTodoData = this.state.todoData.filter(data => data.id !== id); console.log(" newTodoData : ", newTodoData); this.setState({ todoData: newTodoData }); } ~
11.할일 목록 추가하기
강의 :
12.전개 연산자
13.마무리 된 일 표시하기(조건부 삼항 연산자)
App.js
import React, { Component } from "react"; import "./App.css"; export default class App extends Component { btnStyle = { color: "#fff", border: "none", padding: "5px 9px", borderRadius: "50%", cursor: "pointer", float: "right" } getStyle = (completed) => { return { padding: "10px", borderBottom: "1px #ccc dotted", textDecoration: completed ? "line-through" : "none" } } state = { todoData: [{ id: "1", title: "공부하기", completed: false, }, { id: "2", title: "청소하기", completed: true } ], value: "" } handleClick = (id) => { let newTodoData = this.state.todoData.filter(data => data.id !== id); console.log(" newTodoData : ", newTodoData); this.setState({ todoData: newTodoData }); } handleChnage = (e) => { console.log(" e :", e.target.value); this.setState({ value: e.target.value }) } handleSubmit = (e) => { e.preventDefault(); let newTodoData = { id: Date.now(), title: this.state.value, completed: false } this.setState({ todoData: [...this.state.todoData, newTodoData], value: "" }) } handleCompleteChange = (id) => { let newTodoData = this.state.todoData.map(data => { if (data.id === id) { data.completed = !data.completed } return data; }); this.setState({ todoData: newTodoData }) } render() { return ( <div className="container"> <div className="todoBlock"> <div className="title"> <h1>할일 목록</h1> </div> <form style={{ display: 'flex' }} onSubmit={this.handleSubmit}> <input type="text" name="value" style={{ flex: "10", padding: "5px" }} placeholder="해야 할일을 입력 하세요." value={this.state.value} onChange={this.handleChnage} /> <input type="submit" name="입력" className="btn" style={{ flex: '1' }} /> </form> {this.state.todoData.map(data => { return ( <div style={this.getStyle(data.completed)} key={data.id}> <input type="checkbox" defaultChecked={data.completed} onChange={() => this.handleCompleteChange(data.id)} /> {data.title} <button style={this.btnStyle} onClick={() => this.handleClick(data.id)}>x</button> </div> ) })} </div> </div > ) } }
댓글 ( 4)
댓글 남기기