react2
1. 리액트로 트위틀러 만들기
- 아니 갑자기 과제 난이도가 너무 올라간거 아냐…? 너무 어려웠다.
// 기본셋팅값
this.state ={
tweets: [
{
uuid: 1,
writer: "김코딩",
date: "2020-10-10",
content: "안녕 리액트"
},
{
uuid: 2,
writer: "박해커",
date: "2020-10-12",
content: "좋아 코드스테이츠!"
}
]
- class 형으로 컴포넌트를 만들 경우 , constructor(props), super(props)를 해준다.
- 그리고 constructor 안에서 this.state 를 정의해준다.
- 트위틀러 추가되는 부분에 빈문자열 변수 선언하기
- 컴포넌트 안에 이벤트 연결시 bind(this) 로 묶어두기
this.addNewTweet = this.addNewTweet.bind(this)
- 이벤트 메소드 인자’e’로 받아서, this.setState 로 상태 업데이트 해주기
- 인자 안에는 props 가 담겨있다.
- render() {return} 안에다가 출력하고싶은 html 쓰고, 이벤트 걸고싶은 구역에 onChange, onClick 설정
- 새로 입력된 트윗을 포함해서 렌더링 해주기. 여기서 key 값을 설정해줘야지 오류가 나지 않는다.
<ul id="tweets">
{this.state.tweets.map((tweet)=>
<SingleTweet key={tweet.uuid} writer={tweet.writer} date={tweet.date}>{tweet.content}
</SingleTweet>
)}
</ul>
- SingleTweet 컴포넌트에 tweets의 요소 하나하나씩 넘기기 때문에 아래와 같이 인자를 받을 수 있다.
function SingleTweet ({writer, date,children, tweets}) {
return (
<ul >
<div>{writer}</div>
<div>{date}</div>
<div>{children}</div>
</ul>
)}
- Dom에 렌더링할 컴포넌트 export 해주기
//App.js
export default Twittler;
//index.js
import Twittler from './App';
import React from 'react';
import ReactDom from 'react-dom';
ReactDOM.render(
<React.StrictMode>
<Twittler />
</React.StrictMode>,
document.getElementById('root')
);