-
리액트 기초이론 2 - state & props 해답프론트엔드/React 연습과제 해답 2022. 2. 17. 20:21728x90
* 연습과제 1
import logo from './logo.svg'; import './App.css'; import React, { Component } from 'react'; class App extends Component { state = { cnt: 0 } countNumber = () => { this.setState({cnt: this.state.cnt + 1}) } render(){ const {cnt} = this.state return ( <div className="App"> <h1>카운트: {cnt}</h1> <button type="button" onClick={this.countNumber}>change name</button> </div> ) } } export default App;
* 연습과제 2
import logo from './logo.svg'; import './App.css'; import React, { Component } from 'react'; class App extends Component { state = { title: "변경전 제목" } changeTitle = () => { this.setState({title: "제목 업데이트"}) } render(){ const {title} = this.state return ( <div className="App"> <h1>제목: {title}</h1> <button type="button" onClick={this.changeTitle}>change title</button> </div> ) } } export default App;
* 연습과제 3
import React, { Component } from 'react' class Cart extends Component{ state = { cart: [] } //구현하기 addProduct = () => { const product = prompt("원하시는 상품을 추가해주세요 !") this.setState({cart: [...this.state.cart, product]}) } // 구현하기 render(){ const { cart } = this.state return ( <> <button onClick={this.addProduct}>상품 추가하기</button> <h1>상품 목록</h1> <h2>------------</h2> {cart.map( (product, id) => { return ( <h3 key={id}>{product}</h3> ) })} </> ) } } export default Cart
import logo from './logo.svg'; import './App.css'; import React, { Component } from 'react'; import Cart from './Cart' class App extends Component { render(){ return ( <div className="App"> <Cart/> </div> ) } } export default App;
* 연습과제 4
import React, { Component } from 'react' class PhotoGallery extends Component{ state = { photos: [] } //구현하기 addPhoto = () => { const photo = prompt("추가하려는 사진의 경로를 입력해주세요 !") this.setState({photos: [...this.state.photos, photo]}) } // 구현하기 render(){ const { photos } = this.state return ( <> <button onClick={this.addPhoto}>사진추가하기</button> <h1>포토 갤러리</h1> <h2>------------</h2> {photos.map( (photo, id) => { return ( <img key={id} src={photo}></img> ) })} </> ) } } export default PhotoGallery
import logo from './logo.svg'; import './App.css'; import React, { Component } from 'react'; import PhotoGallery from './PhotoGallery' class App extends Component { render(){ return ( <div className="App"> <PhotoGallery/> </div> ) } } export default App;
* 연습과제 5
import React, { Component } from 'react' class CommentFilter extends Component{ state = { comment: this.props.comment.split(' '), insults: ['바보', '똥개', '그지', '임마', '새끼', '죽을'] } filterComment = () => { const { insults } = this.state // 댓글을 음절 단위로 끊기 for(let insult of insults){ // 욕설 필터링 // this.setState({comment: this.state.comment.filter(word => !word.includes(insult)) }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes(insult)) } }) } } componentDidMount(){ this.filterComment() } render(){ const { comment } = this.state console.log(comment) return ( <> <h2>{comment.join(' ')}</h2> </> ) } } export default CommentFilter
import logo from './logo.svg'; import './App.css'; import React, { Component } from 'react'; import CommentFilter from './CommentFilter' class App extends Component { render(){ return ( <div className="App"> <h1>필터링된 댓글</h1> <h2>==============</h2> <CommentFilter comment="너는 진짜 못말리는 바보 똥개다"/> <CommentFilter comment="임마! 너 그렇게 살지마! 그지 새끼야 !"/> <CommentFilter comment="야 씨~ 너 죽을래? 진짜 ! 콱! 마! "/> </div> ) } } export default App;
import React, { Component } from 'react' class CommentFilter extends Component{ state = { comment: this.props.comment.split(' '), insults: ['바보', '똥개', '그지', '임마', '새끼', '죽을'] } filterComment = () => { const { insults } = this.state // 댓글을 음절 단위로 끊기 // for(let insult of insults){ // 욕설 필터링 // this.setState({comment: this.state.comment.filter(word => !word.includes(insult)) }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('바보')) } }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('똥개')) } }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('그지')) } }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('임마')) } }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('새끼')) } }) this.setState( (prevState) => { return { comment: prevState.comment.filter(word => !word.includes('죽을')) } }) // } } componentDidMount(){ this.filterComment() } render(){ const { comment } = this.state console.log(comment) return ( <> <h2>{comment.join(' ')}</h2> </> ) } } export default CommentFilter
728x90'프론트엔드 > React 연습과제 해답' 카테고리의 다른 글
리액트 기초이론 5 - 컴포넌트 스타일링 2 - SASS 해답 (0) 2022.03.02 리액트 기초이론 5 - 컴포넌트 스타일링 해답 (0) 2022.02.28 리액트 기초이론 4 - 컴포넌트의 생명주기 (Life cycle) 해답 (0) 2022.02.23 리액트 기초이론 3 - JSX 문법 해답 (0) 2022.02.21 리액트 기초이론 1 - 클래스형 컴포넌트 & 함수형 컴포넌트 해답 (0) 2022.02.16