/
CATEGORY
React

在 React 使用 Quill 編輯器,並加入上傳圖片至圖床的功能

在 React 中使用 Quill 編輯器,並增加上傳圖片至圖床的功能。react-quill 套件已久未更新,因此轉用官方 Quill 套件。Quill 預設將圖片轉為 base64,但專案需求改為上傳至圖床並插入網址。可在 toolbarOptions 中設定工具列,並增加 uploadImage 功能上傳圖片。

安裝 Quill React 使用 npm,編輯器分為 Editor.js(x) 和 EditorQuill.js(x) 兩部分。Editor.js(x) 載入 Quill 的 snow 或 bubble 主題樣式。EditorQuill.js(x) 設定工具列並新增上傳圖片功能,圖片上傳後插入編輯器,並設置樣式 max-width 為 100%。完整程式碼可在 codesandbox.io 參考。...

7. 使用 MUI X 的 Data Grid 製作台股報價資料

使用 MUI X 的 Data Grid 可以輕鬆製作台股即時報價表格。透過 MUI 的分頁元件和資料分割功能,可實現換頁效果。Data Grid 提供自動排序、索引和過濾等功能,無需額外程式碼。雖然免費版功能有限,但對於開源專案來說已足夠使用。

安裝 @mui/x-data-grid 後,只需定義資料欄位並帶入資料,即可展現強大效果。客製化方面,可調整頁碼顯示與資料顏色,甚至能限制每頁顯示筆數。MUI X 的功能強大,雖然文件複雜,但仍值得使用。...

6. 完善 Server actions 至前端呼叫 API 的錯誤處理

在 Server 使用 throw new Error 不能讓前端接收錯誤,需在後端捕獲錯誤並傳到前端。用 JSON.stringify 和 JSON.parse 處理錯誤資料,讓前端可接收物件格式錯誤。API 成功或失敗都需返回資料給前端,提升使用體驗。

使用 Material UI 的 Fade 和 CircularProgress 增加前端提示和 loading 功能。Next.js 的 error.tsx 可處理未捕獲的錯誤,但會停止渲染,適合處理意外錯誤。自己能掌控的錯誤,建議用 catch{} 處理,以免影響其他功能。...

用 Next.js 的 Server Components 時,該用 fetch() 還是 axios 呼叫 api?

在 Next.js 的 Server Components 中,選擇使用 fetch() 或 axios 呼叫 API 是常見的問題。fetch() 是內建於瀏覽器的函式,支援 Promise 和 async/await 語法;axios 是第三方函式庫,提供額外功能如請求進度監聽和自動 JSON 轉換。Next.js 特別針對 fetch() 進行優化,包括自動記憶請求、資料快取和重新驗證功能,使 fetch() 在 Server Components 中更具優勢。

由於這些優化,建議在使用 Server Components 時考慮使用 fetch()。切換至 fetch() 時需注意將回傳資料轉成 JSON 格式、使用 URLSearchParams() 處理參數,以及檢查 response.ok 以確保沒有 HTTP 錯誤。選擇哪種方法應根據需求和偏好決定。...

5. 串接 TradingView 開發的圖表套件,並透過 Server 端呼叫外部的富果 API

「股票小特助」第五篇介紹如何串接 TradingView 圖表套件,並透過 Server 端呼叫富果 API。首頁功能包括一年內的大盤指數及台股即時報價。使用富果 API 提供的行情和交易 API,並建議未開戶者使用台灣證券交易所的 openAPI。

使用 TradingView 的 Lightweight Charts 套件,方便地將富果 API 的股市資料轉換成圖表。Next.js 的 Server Components 用於從 Server 端呼叫 API,提高首次繪製速度及 SEO。兩種 API 呼叫方法:'use client' 和 'use server',分別適用於前後端的資料處理與畫面渲染。...

4. App Router 路由建置

Next.js 提供兩種路由方式:Page Router 和 App Router。Page Router 採用「檔案即路由」設計,新增檔案即可建立路由,支援動態路由與萬用路由。動態路由可用於生成如 pages/post/[id].js 的路由,萬用路由則可匹配多層級的路徑。

App Router 是 Next.js 13 推出的新功能,檔案放在 app/ 資料夾,使用 page.jsx 對應路由,並引入 layout.jsx 定義不變的網站區塊。App Router 建立在 React Server Components 上,提供更好的性能與伺服器端功能,但使用時需標記 'use client' 或 'use server'。目前使用上有些複雜,但性能優勢明顯。...

在 Next.js 碰到 Text content does not match 的解決辦法

Next.js 在渲染 HTML 時,若 Server 和 Client 端的內容不一致,會出現 "Text content did not match" 錯誤。這是因為 Next.js 先在 Server 預渲染頁面,再由 Client 執行 JavaScript 互動。使用 new Date() 可能導致 Server 和 Client 端時間不一致,從而產生錯誤。

解決方法是使用 useEffect() 阻止某些元件在 Server 端渲染。透過 hydrated 狀態控制,避免在 Server 端渲染日期,Client 端在 hydrated 為 true 時才更新日期。這樣可有效處理渲染不同步問題,適用於類似情況。...

用 React Context API 實作跨組件傳值的功能

使用 React Context API 可以輕鬆實現跨組件傳值功能,適合不需要複雜狀態管理的小型應用。與 Vue 的 Vite + Pinia 類似,React 提供多種狀態管理選擇,如 Redux、Mobx、Zustand、Recoil 和 Jotai,其中 Context API 是內建的選項,無需額外安裝套件。本文介紹了如何在 React 中利用 Context API 來傳遞會員資料,通過建立 UserContext 並在 App 中使用 UserProvider 來共享資料,確保在不同組件間能夠輕鬆取得使用者資料。

實作過程包括在獨立的 context 檔案中打 API 取得即時會員資料,並使用 createContext 和 useContext 建立資料共享機制。在 App 組件中引入 UserProvider,然後在內部使用 useUser Hook 來讀取和渲染使用者資料。此外,其他頁面如 Home.jsx 也可以通過 useUser 獲取資料,實現簡單而有效的跨組件資料傳遞。這種方法適合需要跨組件傳遞資料但不需要複雜狀態管理的情況。...

客製化 Quill 編輯器,並搭配 ant design 製作所見即所得編輯器

為了整合公司內部系統,決定使用 Quill 編輯器重寫文章管理系統,因為 Markdown 無法直接調整文字顏色,轉而選擇 WYSIWYG 編輯器。Quill React 因功能齊全且客製化選項多,最終被選為編輯器。

Quill React 安裝簡單,透過 npm 指令即可完成,並內建兩種主題:snow 和 bubble。可自訂工具列,並加入自訂按鈕,如 undo、redo。使用 HTML 可完全客製化工具列內容,但需謹慎考慮。完整程式碼可在 GitHub 和 CodeSandbox 上獲取。...

Copyright © since 2008 MUKI space* / omegaSS theme All Rights Reserved.