지금까지 배운 React 기초 개념(state, porps, events) 들을 직접 적용하고 응용해보며 내 자신의 약점을 복습해보았다. 이번 과제의 핵심은 주어진 키워드를 활용해 자료를 찾아보면서 적용시켜보는 것이였다.
componentDidMount()
메소드를 통해 라이프 사이클에 대한 이해를 높인다.fetch()
함수를 사용해 API 호출을 할 수 있다.Array.map()
함수를 통해 component를 재활용할 수 있다.props
를 사용해 단방향(부모 컴포넌트 > 자식 컴포넌트)으로 데이터를 전달할 수 있다.Array.filter()
를 통한 검색기능을 구현할 수 있다. (Optional!)componentDidMount()
fetch()
→ 호출할 API 주소: https://jsonplaceholder.typicode.com/userssetState()
→ state 객체 내에 monsters
라는 key 값에 저장Solution)
componentDidMount() {
fetch("https://jsonplaceholder.typicode.com/users")
.then((res) => res.json())
.then((res) => this.setState({ monsters: res }));
}
Solution)
render() {
return (<div className="Monsters"> <h1>컴포넌트 재사용 연습!</h1> {/* <SearchBox handleChange=정의한메소드 /> */} <CardList monsters={this.state.monsters} /> </div> );
}
Solution)
class CardList extends Component {
render() {
return (<div className="card-list"> {this.props.monsters.map((monster) => { return ( <Card key={monster.id} id={monster.id} name={monster.name} email={monster.email} /> ); })} </div> );
Soultion)
class Card extends Component {
render() {
return (<div className="card-container"> <img src={`https://robohash.org/${this.props.id}?set=set2&size=180x180`} alt="" /> <h2>{this.props.name}</h2> <p>{this.props.email}</p> </div> );
}
}