iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
自我挑戰組

從零開始學習React 系列 第 18

Day18 使用React建立手風琴菜單(accordion menu)

  • 分享至 

  • xImage
  •  

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:"參加者應保證其因參加本活動所填寫或提出之資料均為真實且正確,且未冒用或盜用任何第三人之資料。一經主辦單位發現或經第三人檢舉該等資料有不實或不正確之情事,主辦單位得取消其參加或得獎資格。 "
},
]

上一篇
Day17 在React 中使用Material icons
下一篇
Day19 React Context API
系列文
從零開始學習React 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言