import React, { Component } from "react"; import { Loader, Message, Segment, Header, Icon, Image } from "semantic-ui-react"; import { Link } from "@reach/router"; import Moment from "react-moment"; import "moment/locale/es"; import Post from "./Post"; class Board extends Component { constructor() { super(); this.state = { isLoaded: false, threadList: [], error: null } } componentDidMount() { fetch(`https://bienvenidoainternet.org/cgi/api/list?dir=${this.props.dir}&replies=5&limit=10`) .then((response) => { return response.json(); }) .then((resource) => { if (resource["state"] == "error") { this.setState({ error: resource }); } this.setState({ isLoaded: true, threadList: resource["threads"] }) }) .catch(console.error) } componentWillUnmount() { console.log("will unmount") } componentDidUpdate(prevProps) { // Uso tipico (no olvides de comparar los props): if (this.props.dir !== prevProps.dir) { this.setState({ isLoaded: false, threadList: [], error: null }) this.componentDidMount(); } } render() { const { isLoaded, error, threadList } = this.state; if (error != null) { return (
API Status: {error.state}

{error.message}

); } if (!isLoaded) { return ( Cargando ... ) } return (
{threadList.map(thread =>
{thread.subject} {thread.name} ―
{thread.replies.map((reply, index, replies) =>
#{thread.total_replies - replies.length + index + 1} {reply.name}
)} )}
); } } export default Board;