iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

30 天線上自學前端系列 第 41

[Day 41] [React] React Props 練習篇!

  • 分享至 

  • xImage
  •  

昨天是 React Props 的簡單介紹,今天依照課程安排就是 React Props 練習~

今天的 React Props 練習題目:
//1. Apply CSS styles to App.jsx component
//to match the appearance on the completed app:
//https://c6fkx.csb.app/
//2. Extract the contact card as a reusable Card component.
//3. Use props to render the default Beyonce contact card
//so the Card component can be reused for other contacts.
//4. Import the contacts.js file to create card components.


簡單說,就是要把現在看起來壞掉的頁面變成 https://c6fkx.csb.app/ 的樣子:

https://ithelp.ithome.com.tw/upload/images/20221011/201515887Xms2MCT5P.png

現在壞掉的樣子:

https://ithelp.ithome.com.tw/upload/images/20221011/20151588BamV3aSTq2.png


我的第一步會想要把 CSS 都調整好。

我在 App.jsx 裡面調整過 name, phoneNumber, email 後,整個卡片已經長得像結果。

https://ithelp.ithome.com.tw/upload/images/20221011/20151588FEgbD3yJwZ.png


我的第二步是把 card 轉成可以重複使用的 components。

需要重複使用的有:名字、電話、電子信箱、照片。

先把 App.jsx 的內容全部複製貼上改一下 function 名稱為 Card

import React from "react";

function Card() {
  return (
    <div>
      <h1 className="heading">My Contacts</h1>
      <div className="card">
        <div className="top">
          <h2 className="name">Beyonce</h2>
          <img className="circle-img"
            src="https://blackhistorywall.files.wordpress.com/2010/02/picture-device-independent-bitmap-119.jpg"
            alt="avatar_img"
          />
        </div>
        <div className="bottom">
          <p className="info">+123 456 789</p>
          <p className="info">b@beyonce.com</p>
        </div>
      </div>
    </div>
  );
}

export default Card;

然後到 App.jsx 來試試看是否可以使用這個 components

function App() {
  return (
    <div>
      <h1 className="heading">My Contacts</h1>
      <Card/>
      ...
      ...
      ...

OK~ 確認可以使用,可以來做 Props 了~

我先在 App.jsx 裡面把 <Card/> 都打好,這樣在 Card.jsx 編輯時就可以馬上看到結果:

<Card
      name="Apple"
      phone="000-111-333"
      email="Apple@mailbox"
      photo="https://media.istockphoto.com/photos/red-apple-picture-id184276818?b=1&k=20&m=184276818&s=612x612&w=0&h=P2SeCVIuTUdiq0zfSMGaC7WeCFYbe4ZdciGEOTurkQs="
      />

回到 Card.jsx 把 props 打好,有 {props.name}, {props.photo}, {props.phone}, {props.email}

function Card(props) {
  return (
    <div>
      <div className="card">
        <div className="top">
          <h2 className="name">{props.name}</h2>
          <img className="circle-img"
            src={props.photo}
            alt="avatar_img"
          />
        </div>
        <div className="bottom">
          <p className="info">{props.phone}</p>
          <p className="info">{props.email}</p>
        </div>
      </div>
    </div>
  );
}

OK~ 看起來沒什麼問題:

https://ithelp.ithome.com.tw/upload/images/20221011/201515881d9i3kqK3x.png

最後就是把 Components 在 App.jsx 上用超多次!然後就會變成不同的卡片了~但只用了一個 components:

https://ithelp.ithome.com.tw/upload/images/20221011/20151588IjUngw8nwa.png


上一篇
[Day 40] [React] React Props 簡單介紹
下一篇
[Day 42] [React] React DevTools 介紹 - 1
系列文
30 天線上自學前端72
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言