Day18 使用React建立手风琴菜单(accordion menu)

https://ithelp.ithome.com.tw/upload/images/20211003/20139800eGGG9kA2Dv.png

主程序Accordion.js

import React ,{useState} from 'react';
import {questions} from './api';
import "./accordion.css";
import MyAccordion from './MyAccordion';

const Accordion = (props) => {
    const [data, setData] = useState(questions);
    return (
        <div>
           <section className="main-div">
           <h1>2021 iThome 铁人赛</h1>
           {
               data.map((curElem) =>{
                   const {id } = curElem;
                  return <MyAccordion  key={id} {...curElem}  /> ;
               })
           }
           </section>
        </div>
    )
}

export default Accordion;

组件程序MyAccordion.js

import React ,{useState} from 'react'

const MyAccordion = ({question,answer}) => {

    const [show, setShow] = useState(false);
    
    return (
        <div>
           
           <div className="title">
              <p onClick ={() =>setShow(!show)} >{show? "➖" :"➕"}</p>
              <h3>{question}</h3>
           </div>
           
           { show && <p className="answers">{answer}</p>}           

        </div>
    )
}

export default MyAccordion

放资料的程序api.js

export const questions = [
  {
      id:1,
      question:'活动办法',
      answer:" 必须挑战在iT邦帮忙上发表技术文章,连续 30 天不中断。成功通过这个需要坚持与毅力的考验,即可以练成铁人 "
  },
  {
    id:2,
    question:'如何参赛',
    answer:"注册成为 iT 邦帮忙会员即可报名参加铁人赛 "
},
{
    id:3,
    question:'活动规范',
    answer:"参加「主题竞赛」者,发表内容须符合主题,若发表内容与IT内容无关或不符主题,主办单位有权取消参赛资格。 "
},
{
    id:4,
    question:'主题竞赛组别',
    answer:"Modern Web   Mobile Development   Arm Platforms - Sparking the World’s Potential"
},
{
    id:5,
    question:'评选说明',
    answer:"评审作业分为资格审查与作品审查。资格审查由主办单位依参赛资格与作品格式审定,作品审查由主办单位聘请主题竞赛组别的领域专家,组成评审委员会进行初审与复审(决审)作业。若评审委员会认为作品未达水准或有特别表现,得决议奖项从缺或增减得奖名额。 "
},
{
    id:6,
    question:'注意事项',
    answer:"参加者应保证其因参加本活动所填写或提出之资料均为真实且正确,且未冒用或盗用任何第三人之资料。一经主办单位发现或经第三人检举该等资料有不实或不正确之情事,主办单位得取消其参加或得奖资格。 "
},
]

<<:  Eloquent ORM - 多对多关联

>>:  大共享时代系列_017_共享洗衣机

[Day15]-类别2

类别继承 定义:可以继承父类别所有的公有方法与属性,在子类别就不用重新设计 基於保护原则,外部是不...

[Day24] 实作 - 动画篇1

现在来帮技能加上一些动画吧 其实RPG maker已经内建有很多动画了 在工具 -> 资料库 ...

Day 7 被动搜查(4)-Email 相关、Harvester、Recon-ng

Email 安全 为什麽要收集各个企业的 Email 信箱,透过了解企业公开在外的 Email,可...

DAY14-JAVA的继承(1)

对OOP的程序来说,类别的精随之处在於类别有「继承」(inheritance)这项功能,继承可以让我...

Day 18 利用 Kubernetes 建立 Prometheus Service

Kubernetes and Prometheus 安装 Kubernetes 及 建立丛集 htt...