Day 27 - React And BootStrap 動態橫幅廣告 Carousel
上一章做了橫幅廣告
現在加入卡片式資訊, 我們一樣使用Reactstrap套件
新增MyCard.js
import React, { Component } from 'react';
import {
    Card,
    CardGroup,
    CardText,
    CardBody,
    CardTitle,
    CardSubtitle,
    Button,
} from 'reactstrap';
class MyCard extends Component {
    constructor(props) {
        super(props);
        this.state = { exams: [] };
    }
    componentDidMount() {
        fetch('api/exams').then(response => response.json()).then(data => this.setState({ exams: data }));
    }
    render() {
        const { exams } = this.state;
        const examList = exams.map(exam => {
            return (
                    <CardBody>
                        <CardTitle>證照: {exam.certificate.name}</CardTitle>
                        <CardSubtitle>協辦單位: {exam.vendor.name}</CardSubtitle>
                        <CardText>考試日期: {exam.examDate}</CardText>
                        <Button color="outline-primary">learn more</Button>
                    </CardBody>
            )
        });
        return (
            <CardGroup>
                { examList }
            </CardGroup>
        );
    }
}
export default MyCard;
Fetch API向後端請求exams的資料
大家可以發現這次的資料跟之前不太一樣
exam.certificate.name
exam.vendor.name
為什麼會有兩層呢? 因為我們後端的Model使用JoinColumn直接回傳整個物件
所以在我們的exam裡面會包含certificate與vendor物件
這樣取資料只需要取一次, DB也只需要進出一次, 節省了很多時間
頻繁進出DB會使程式效率極差, 在設計時應特別注意
現在啟動專案, 畫面應該長這樣

下一章 Day 29 - React Tree Graph 樹狀結構圖