Mark Ku's Blog

前言

近年 React 前端生態越來越豐富,大量的套件,都是採用 react 開發,也被越來越多企業使用,也讓我也想去了解一下 React,過去從 Angular 、到 Vue、再到 React,我也終於湊滿前端三大框架了,嗯,應該可以向神龍許願了。

三大框架,各自的優勢

Angular - 框架有很明確的規範,有完整的解決方案及強大的 CLI,後端人員上手比較容易。
Vue - 開發快速, api 簡單,使用起來無負擔,舊系統整合翻寫較容易。
React - 前端生態更完整,撰寫起來更貼近 JS 語法,對很多企業來說,穩定又安全,版本昇級不用打掉重練。

專案建立

建立 react 專案,並使用 typescript

npx create-react-app jira --template typescript

P.S.npx非常智能的識別模塊,如果模塊存在,就使用。如果不存在,就臨時下載,用完就刪除。

typescript.json 更改 baseUrl,將預設目錄改成 src

加入 src

{
  "compilerOptions": {
   "baseUrl": "src",
...
}

React 會觸動刷新的兩個屬性

React State

state 有變動時 -> 影響到 virutal dom -> 重新渲染 dom,頁面更新。

React Props ( 外部傳入 )

class component

class ContactInfoBlock extends React.Component {
  constructor(props) {
    super(props);
  } 
  ...
}

function component

import { FC } from "react";
const ContactInfoBlock: FC<ContractProps> = () => {
...
}	

for 迴圈渲染 - 就是自己寫 map 去渲染.

import React from "react";

export const Test = () => {
  let items = [1, 3, 5, 7];

  return (
    <div>
      {items?.map((item, index) => (
        <span key={index}>{item}</span>
      ))}
    </div>
  );
};

export default Test;

條件判斷 - 也是寫一個 function , return 一個 html 標籤

import React from "react";

export const Test = () => {
  let items = [1, 3, 5, 7];

  function showItem(item: Number) {
    if (item === 3) {
      return;
    } else {
      return <h1 key={item.toString()}>{item}</h1>;
    }
  }

  return <div>{items?.map((item, index) => showItem(item))}</div>;
};

export default Test;

組件的生命周期,變得很簡單

掛載(Mounting):已插入真實 DOM
更新(Updating):正在被重新渲染
卸載(Unmounting):已移出真實 DOM
React 組件生命週期掛載更新卸載流程圖

心得

開始寫 React時,就發現缺少了很多語法糖,寫起來突然很不習慣,撰寫真的比較貼近 js ,渲染的引擎,幾乎沒有框架的語法,就是單純的 js ,下面就是我覺得差異最多的是

1.缺少很多框架語法糖
2.會影響元件再渲染的就只有 prop 和 state (變得很單純)
3.生命週期更單純 - Mounting、Updating、Unmounting
4.條件判斷 - 也是寫一個 function , return 一個 html 標籤
5.for 迴圈渲染 - 就是自己寫 map 去渲染
6.撰寫自由度很高 ( 不見得是好事 )
但三大框架的共通點,都更傾向完整支援 typescript

參考資料

參考資料

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··603

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··440

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··323

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··239

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··222

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
Mark Ku
··199

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調