[TIL][React] 컴포넌트 활용 코멘트 앱 구현
React.js 의
Component, State, props 등의 기본적인 개념들을 이용하여
아주 간단한 코멘트를 작성할수 있는 웹앱을 구현해 보았다.
해당 작업을 Vanila JS와 DOM조작 만으로 구현했던 지식이 자꾸만 떠올라서
쉽게 React방식에 적응하지 못했던것 같다. 서버 및 DB는 없는 껍데기 뿐인 클라이언트지만 생각보다 쉽게 빠르게 구현하진 못하였다.
다음과 같이 간단한 코멘트를 작성할수 있는 웹앱이다. 상단의
textarea
의 value에 변화가 일어날 때 마다 핸들링하여
가장 <Twittler>
컴포넌트의 state.value 값을 변경해 준다.
버튼을 클릭 시 이벤트가 발생해, 클릭 당시의 state.value 값으로 새로운
코멘트 컴포넌트인<SingleTweet>
을 생성해 준다.
Code
import React from 'react';
import './App.css';
class Twittler extends React.Component {
constructor(props) {
super(props);
this.state = {
tweets: [
{
uuid: 1,
writer: "김코딩",
date: "2020-10-10",
content: "안녕 리액트"
},
{
uuid: 2,
writer: "박해커",
date: "2020-10-12",
content: "죽여...줘"
}
],
value: ''
};
this.handleChange = this.handleChange.bind(this);
this.handleClick = this.handleClick.bind(this);
}
handleChange(e) {
this.setState({value: e.target.value});
}
handleClick(val) {
let newTweet = {
uuid: this.state.tweets.length + 1,
writer: '김코딩',
date: `${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
content: val
};
this.setState({tweets: [...this.state.tweets, newTweet]})
this.setState({value: ''});
}
render() {
return (
<div>
<Writer />
<div id="writing-area">
<textarea id="new-tweet-content" value={this.state.value} onChange={this.handleChange} placeholder="바른말 고운말"></textarea>
<button id="submit-new-tweet" onClick={() => this.handleClick(this.state.value)}>
트윗 작성하기
</button>
</div>
<ul id="tweets">
{this.state.tweets.map(json => {
<SingleTweet key={json.content} writer={json.writer} date={json.date} content={json.content}/>
})}
</ul>
</div>
)
}
}
function SingleTweet({writer, date, content}) {
return(
<li className="singleTweet">
<div>{writer}</div>
<div>{date}</div>
<div>{content}</div>
</li>
);
}
function Writer() {
return (
<div id="writer">작성자: 김코딩</div>
)
}
function App() {
return (
<Twittler />
);
}
export default App;
이렇게 보고 나니 정말 못생기고 끔찍하게 작성한것 같다. 앞으로는 코드 가독성에
좀 더 신경을 써야할것 같다...
Author And Source
이 문제에 관하여([TIL][React] 컴포넌트 활용 코멘트 앱 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tsts_/TILReact-컴포넌트-활용-코멘트-앱-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)