以前從未聽過react-toastify?去看看示範
v11 有什麼新功能
我對這個版本感到非常興奮!主要重點是定制,我的目標是賦予您(和我自己)權力,以便您可以完全個性化通知的外觀和感覺。
簡而言之,react-toastify 應該能夠融入任何設計系統。
不再需要導入css文件
樣式表現在會自動注入,因此您不再需要匯入它。 CSS 檔案仍然由庫匯出。
import { ToastContainer, toast } from 'react-toastify'; function App(){ const notify = () => toast("Wow so easy !"); return ( <div> <button onclick="{notify}">Notify !</button> <toastcontainer></toastcontainer> </div> ); }
輕鬆訂製!
最重要的請求之一是如何自訂通知。公平地說,在這個版本之前,它非常具有挑戰性,因為它需要用戶覆蓋大量 CSS 類別。
我透過刪除無關的 div 元素、嵌套元素等簡化了通知的 DOM 結構...這是一個重大的突破性更改,但確實值得付出努力。我可以自信地說,該庫現在可以無縫整合到任何設計系統中。
下面,我只使用 Tailwind 實作了幾種不同的設計。 我沒有覆蓋react-toastify中的單一CSS類別? !
前往 stackblitz 查看程式碼。
它在實務上是如何運作的?左邊是舊的 DOM 結構,右邊是新的 DOM 結構。
- Toastify__toast-body 和它的孩子現在完全消失了。
- CloseButton 現在使用絕對位置。
由於這些更改,沒有任何內容會幹擾您的內容。
Toastify__toast 有一些合理的預設值(例如,邊框半徑、陰影等),可以使用 css 或透過更新關聯的 css 變數來自訂:
width: var(--toastify-toast-width); min-height: var(--toastify-toast-min-height); padding: var(--toastify-toast-padding); border-radius: var(--toastify-toast-bd-radius); box-shadow: var(--toastify-toast-shadow); max-height: var(--toastify-toast-max-height); font-family: var(--toastify-font-family);
自訂進度條
在開發此版本時,允許自訂進度列根本不在我的待辦事項清單中。但看到現在自訂通知是多麼容易,我無法抗拒? .
最好的部分是,您不必在 autoClose、pauseOnHover、pauseOnFocusLoss 甚至受控進度條等功能上做出妥協,它只是為您無縫工作。
這是一個小要點。
function App() { const notify = () => { toast(CustomComponent, { autoClose: 8000, // removes the built-in progress bar customProgressBar: true }); }; return ( <div> <button onclick="{notify}">notify</button> <toastcontainer></toastcontainer> </div> ); } // isPaused is now available in your component // it tells you when to pause the animation: pauseOnHover, pauseOnFocusLoss etc... function CustomComponent({ isPaused, closeToast }: ToastContentProps) { return ( <div> <span>Hello</span> <mycustomprogressbar ispaused="{isPaused}" onanimationend="{()"> closeToast()} /> </mycustomprogressbar> </div> ); }
前往 stackblitz 查看實例。
輔助使用和鍵盤導航
ToastContainer 和 toast 接受 ariaLabel 屬性(最後......)。這對於螢幕閱讀器和測試非常有幫助。
例如,在 cypress 中,您可以執行 cy.findByRole("alert", {name: "您指定的 aria label"}).
import { ToastContainer, toast } from 'react-toastify'; function App(){ const notify = () => toast("Wow so easy !"); return ( <div> <button onclick="{notify}">Notify !</button> <toastcontainer></toastcontainer> </div> ); }
如果通知可見且使用者按 alt t,它將聚焦於第一個通知,允許使用者使用 Tab 瀏覽通知中的不同元素。
熱鍵當然可以更改。
width: var(--toastify-toast-width); min-height: var(--toastify-toast-min-height); padding: var(--toastify-toast-padding); border-radius: var(--toastify-toast-bd-radius); box-shadow: var(--toastify-toast-shadow); max-height: var(--toastify-toast-max-height); font-family: var(--toastify-font-family);
onClose 回呼通知刪除原因
您想知道用戶是否關閉了通知還是自動關閉了?請放心,這現在成為可能!
onClose 回呼的簽章現在是 onClose(reason?: boolean | string) =>無效。
當使用者關閉通知時,reason 參數等於 true。在下面的範例中,我將我的參數命名為
刪除了用戶以明確意圖。
function App() { const notify = () => { toast(CustomComponent, { autoClose: 8000, // removes the built-in progress bar customProgressBar: true }); }; return ( <div> <button onclick="{notify}">notify</button> <toastcontainer></toastcontainer> </div> ); } // isPaused is now available in your component // it tells you when to pause the animation: pauseOnHover, pauseOnFocusLoss etc... function CustomComponent({ isPaused, closeToast }: ToastContentProps) { return ( <div> <span>Hello</span> <mycustomprogressbar ispaused="{isPaused}" onanimationend="{()"> closeToast()} /> </mycustomprogressbar> </div> ); }
如果您在通知中使用自訂元件,您可能需要更多地控制原因,特別是當它包含
多次號召性用語。
toast("hello", { ariaLabel: "something" })
?重大變化
useToastContainer 和 useToast 不再公開
除非您深入研究react-toastify原始程式碼以了解如何將事物黏合在一起,否則這些鉤子是無法使用的。這不是我想要給我的用戶的,一開始曝光他們就是一個錯誤的決定,我已經吸取了很好的教訓。
onClose 和 onOpen 不再接收子屬性
事後看來,我根本不該這麼做。該功能實際上並沒有被使用。每個回調的新簽名下方:
- onOpen: () =>;無效
- onClose: (原因?: boolean | string) =>無效
造型
- React-toastify/dist/ReactToastify.minimal.css 已被刪除。
- Scss 現在已經不存在了。該庫使用了很好的舊 css。
- 不再需要 bodyClassName 和 bodyStyle。
- ProgressBarStyle 是為了減少 api 表面。它們現在是在不依賴內聯樣式的情況下自訂所有內容的更好方法。
- 注入樣式已被刪除。不再需要此功能。
- CSS 類別 Toastify__toast-body 及其直接子類別已被刪除。
?錯誤修復
- 新增對react19的支援 #1177 #1185
- 重新匯出 CloseButtonProps #1165
- 這次修復最新的OnTop #1176
- 不再拋出這個醜陋的錯誤:無法設定未定義的屬性(設定「切換」)#1170
- onClose 回呼不再延遲,直到退出動畫完成 #1179
?下一步是什麼?
我正在逐漸重寫部分文件。我在 stackblitz 上建立了一個集合,這樣您就可以在一個地方找到所有範例。我會不斷添加更多範例。
以上是React-toastify v-終於可以輕鬆自訂了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。