Front-end Development,
Effective Note-Taking.
在 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 參考。...
在 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 錯誤。選擇哪種方法應根據需求和偏好決定。...
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 可以輕鬆實現跨組件傳值功能,適合不需要複雜狀態管理的小型應用。與 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 編輯器重寫文章管理系統,因為 Markdown 無法直接調整文字顏色,轉而選擇 WYSIWYG 編輯器。Quill React 因功能齊全且客製化選項多,最終被選為編輯器。
Quill React 安裝簡單,透過 npm 指令即可完成,並內建兩種主題:snow 和 bubble。可自訂工具列,並加入自訂按鈕,如 undo、redo。使用 HTML 可完全客製化工具列內容,但需謹慎考慮。完整程式碼可在 GitHub 和 CodeSandbox 上獲取。...