【React】:今天写了一个基础简单的demo:

电脑技术 电脑技术 237 人阅读 | 3 人回复 | 2026-01-06

  1. import React from 'react'
  2. import ReactDOM from 'react-dom'
  3. import asabenehImage from './images/asabeneh.jpg'

  4. const UserCard = ({ user: { firstName, lastName, image } }) => (
  5.   <div className='user-card'>
  6.     <img src={image} alt={firstName} />
  7.     <h2>
  8.       {firstName}
  9.       {lastName}
  10.     </h2>
  11.   </div>
  12. )

  13. const Button = ({ text, onClick, style }) => (
  14.   <button style={style} onClick={onClick}>
  15.     {text}
  16.   </button>
  17. )

  18. const buttonStyles = {
  19.   backgroundColor: '#61dbfb',
  20.   padding: 10,
  21.   border: 'none',
  22.   borderRadius: 5,
  23.   margin: 3,
  24.   cursor: 'pointer',
  25.   fontSize: 18,
  26.   color: 'white',
  27. }

  28. const Header = (props) => {
  29.   const {
  30.     welcome,
  31.     title,
  32.     subtitle,
  33.     author: { firstName, lastName },
  34.     date,
  35.   } = props.data

  36.   return (
  37.     <header>
  38.       <div className='header-wrapper'>
  39.         <h1>{welcome}</h1>
  40.         <h2>{title}</h2>
  41.         <h3>{subtitle}</h3>
  42.         <p>
  43.           {firstName} {lastName}
  44.         </p>
  45.         <small>{date}</small>
  46.       </div>
  47.     </header>
  48.   )
  49. }

  50. const TechList = ({ techs }) => {
  51.   return techs.map((tech) => <li key={tech}>{tech}</li>)
  52. }

  53. const Main = (props) => {
  54.   return (
  55.     <main>
  56.       <div className='main-wrapper'>
  57.         <p>Prerequisite to get started react.js:</p>
  58.         <ul>
  59.           <TechList techs={props.techs} />
  60.         </ul>
  61.         <UserCard user={props.user} />
  62.         <Button
  63.           text='Greet People'
  64.           onClick={props.greetPeople}
  65.           style={buttonStyles}
  66.         />
  67.         <Button
  68.           text='Show Time'
  69.           onClick={props.handleTime}
  70.           style={buttonStyles}
  71.         />
  72.       </div>
  73.     </main>
  74.   )
  75. }

  76. const Footer = (props) => {
  77.   return (
  78.     <footer>
  79.       <div className='footer-wrapper'>
  80.         <p>Copyright {props.date.getFullYear()}</p>
  81.       </div>
  82.     </footer>
  83.   )
  84. }

  85. const App = () => {
  86.   const showDate = (time) => {
  87.     const months = [
  88.       'January', 'February', 'March', 'April', 'May', 'June',
  89.       'July', 'August', 'September', 'October', 'November', 'December',
  90.     ]

  91.     const month = months[time.getMonth()].slice(0, 3)
  92.     const year = time.getFullYear()
  93.     const date = time.getDate()
  94.     return ` ${month} ${date}, ${year}`
  95.   }

  96.   const handleTime = () => {
  97.     alert(showDate(new Date()))
  98.   }

  99.   const greetPeople = () => {
  100.     alert('Welcome to 30 Days Of React Challenge, 2020')
  101.   }

  102.   const data = {
  103.     welcome: 'Welcome to 30 Days Of React',
  104.     title: 'Getting Started React',
  105.     subtitle: 'JavaScript Library',
  106.     author: {
  107.       firstName: 'Asabeneh',
  108.       lastName: 'Yetayeh',
  109.     },
  110.     date: 'Oct 7, 2020',
  111.   }

  112.   const techs = ['HTML', 'CSS', 'JavaScript']
  113.   const user = { ...data.author, image: asabenehImage }

  114.   return (
  115.     <div className='app'>
  116.       <Header data={data} />
  117.       <Main
  118.         user={user}
  119.         techs={techs}
  120.         handleTime={handleTime}
  121.         greetPeople={greetPeople}
  122.       />
  123.       <Footer date={new Date()} />
  124.     </div>
  125.   )
  126. }

  127. export default App;
复制代码




基于FP,效果如下:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

回答|共 3 个

simonzhd 发表于 2026-1-6 17:59:02| 字数 26 | 显示全部楼层

我也准备学学react ,空了用RN开发一个app玩玩

legs+ 发表于 2026-1-6 22:39:33| 字数 245 | 显示全部楼层

上面这段代码,很经典

1.return,一个有 return 一个没有
=> (...):通道畅通,结果直接流出来(自动 return)。
=> { ... }:通道被大括号截住了,你需要手动把结果 return 出来。

2。{ text, onClick, style }是什么意思?
更简洁:不需要到处写 props.。
更清晰:看函数的第一行(函数签名),就能立刻知道这个组件需要哪些参数(text, onClick, style)。如果只写一个 (props),你还得去读代码通过 props.xxx 才知道它用了什么。

legs+ 发表于 2026-1-6 22:48:32| 字数 0 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐