import * as React from 'react'; import PostListItem from './PostListItem'; import Spinner from '../shared/Spinner'; import IBoard from '../../interfaces/IBoard'; import IPost from '../../interfaces/IPost'; interface Props { board: IBoard; } interface State { posts: Array; isLoading: boolean; error: string; } class PostList extends React.Component { constructor(props) { super(props); this.state = { posts: [], isLoading: true, error: '', }; } async componentDidMount() { const boardId = this.props.board.id; try { let res = await fetch(`http://localhost:3000/posts?board_id=${boardId}`); let data = await res.json(); this.setState({isLoading: false}); this.setState({ posts: data.map(post => ({ title: post.title, description: post.description, postStatus: { name: post.post_status_name, color: post.post_status_color, }, })), }); } catch (e) { this.setState({ error: 'An unknown error occurred, try again.' }); } } render() { const { posts, isLoading, error } = this.state; return (
{ isLoading ? : null } { error ? {error} : null } { posts.map((post, i) => ( )) }
); } } export default PostList;