Redux 死了嗎?為什麼我將 Redux 從 SaaS 應用程式中踢出
?連接:https://www.subham.online
?推特:https://twitter.com/TheSubhamMaity
幾個月前,我冒險重構了我已經開發了一段時間的 SaaS 應用程式的部分內容。我們有 Redux 在那裡,做它的事情,管理全域狀態。但感覺有些不對勁——程式碼庫變得越來越龐大,Redux 開始感覺……沉重。你知道嗎,就像你在背包裡放了幾個月沒碰過的東西?就是這種感覺。
但隨著我們的應用程式的發展,複雜性也隨之增加。 Redux 開始感覺不像是解決方案,而更像是一個問題。我們編寫的樣板檔案多於實際邏輯。
?終極版困境
有一天,在與另一個 Redux 相關的 bug 作鬥爭時,我偶然發現了 React Query。經過一番研究,我發現了 React Query。我聽過很多關於它的討論,但我從未想過它可以完全取代 Redux。然後我就嘗試了一下。
之前(使用 Redux):
// Action const fetchUserData = (userId) => async (dispatch) => { dispatch({ type: 'FETCH_USER_REQUEST' }); try { const response = await api.fetchUser(userId); dispatch({ type: 'FETCH_USER_SUCCESS', payload: response.data }); } catch (error) { dispatch({ type: 'FETCH_USER_FAILURE', error }); } }; // Reducer const userReducer = (state = initialState, action) => { switch (action.type) { case 'FETCH_USER_REQUEST': return { ...state, loading: true }; case 'FETCH_USER_SUCCESS': return { ...state, loading: false, data: action.payload }; case 'FETCH_USER_FAILURE': return { ...state, loading: false, error: action.error }; default: return state; } }; // Component const UserProfile = ({ userId, fetchUserData, userData, loading, error }) => { useEffect(() => { fetchUserData(userId); }, [userId]); if (loading) return <Spinner />; if (error) return <Error message={error.message} />; return <UserInfo user={userData} />; }; const mapStateToProps = (state) => ({ userData: state.user.data, loading: state.user.loading, error: state.user.error, }); export default connect(mapStateToProps, { fetchUserData })(UserProfile);
之後(使用 React 查詢):
const useUserData = (userId) => { return useQuery(['user', userId], () => api.fetchUser(userId)); }; const UserProfile = ({ userId }) => { const { data, isLoading, error } = useUserData(userId); if (isLoading) return <Spinner />; if (error) return <Error message={error.message} />; return <UserInfo user={data} />; }; export default UserProfile;
React Query 為我們完成了大部分繁重的工作,而不是手動獲取資料、編寫減速器、調度操作,然後更新儲存。將其與一些精心設計的自訂掛鉤配對,我們就擁有了一個精益、平均的狀態管理機器。
?但等等,Redux 都不好嗎?
現在,請不要誤會我的意思。 Redux 不是惡魔。它是一個強大的工具,有其一席之地。如果您正在建立具有複雜客戶端狀態的應用程序,則需要在許多不相關的元件之間共享,如果您正在使用深度嵌套的狀態,或者如果您需要對應用程式的流程進行更明確的控制,但對於90 % 的情況下,尤其是處理伺服器狀態時,React Query 自訂掛鉤就足夠了。
那麼,為什麼要大驚小怪呢?有時,身為開發人員,我們會陷入使用熟悉的工具的陷阱,即使有更好的工具。這就是我和 Redux 發生的事情。我陷入了舊的方式,認為 Redux 是在大型應用程式中管理狀態的唯一方法。我的意思是,整個網路都在說「要嘛 Redux,要嘛破產!」對嗎?
?情節轉折
最重要的是:透過刪除 Redux,我們實際上使我們的應用程式更具可擴展性。違反直覺,對吧?但想想 - 透過 React Query 處理我們的伺服器狀態和管理本地狀態的自訂鉤子,我們有一個明確的關注點分離。我們應用程式的每個部分都變得更加模組化並且更易於推理。
? Redux 死了嗎?
老實說,在過去的幾個月裡,我很少看到 React Query 無法滿足我的需求的情況。
那麼,Redux 死了嗎?也許不是,但絕對不是以前的全明星了。用於在現代 React 應用程式中處理伺服器狀態
所以,你就有了。我們從 Redux 成癮到 React Query 啟蒙之旅。這並不總是那麼容易——有一些懷疑的時刻、深夜的調試會議以及不止幾次摀臉。但最終,這是值得的。
如果您在自己的應用程式中感到 Redux 陷入困境,我鼓勵您退一步問自己:您真的需要它嗎?您可能會對答案感到驚訝。
有時少即是多。尤其是在狀態管理方面。現在請原諒,我還有一些要刪除的減速器。快樂編碼!
以上是Redux 死了嗎?為什麼我將 Redux 從 SaaS 應用程式中踢出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

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

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。
