React,關於redux的一點小見解

来源:http://www.cnblogs.com/www-wwr/archive/2017/05/28/6914801.html
-Advertisement-
Play Games

最近項目做多頁面應用使用到了,react + webpack + redux + antd去構建多頁面的應用,本地開發用express去模擬服務端程式(個人覺得可以換成dva).所以在這裡吐槽一下我自己對於redux的一些見解。 Redux是狀態管理的服務,可以當作是mvc中的controller層 ...


  最近項目做多頁面應用使用到了,react + webpack + redux + antd去構建多頁面的應用,本地開發用express去模擬服務端程式(個人覺得可以換成dva).所以在這裡吐槽一下我自己對於redux的一些見解。

  Redux是狀態管理的服務,可以當作是mvc中的controller層,你也可以把它認為是mvvm中vm層。雖然它本身受到Flux的影響很大,但是它的核心概念缺很簡單,就是Redue也就是ES5中Array.prototype.reduce,這個reduce用於合併數組的元素,例:

  

  Redux認為,一個應用程式中,所有的應用模塊之間需要共用訪問的數據,都應該在Store的State裡面。這點和React的state和props的概念是一致的。外面的props儘量不去改變,而改變的只是內部的狀態state,而有shouldComponentUpdate這個生命周期函數,我們可以優化react.

  但是有一個原則是沒有改變的,就是在你不知道你是否需要redux的時候,你肯定是不需要它。就像Flux的作者說的那樣,Flux就像眼鏡,你會知道你在什麼時候需要它。

  下麵介紹一些本人對於redux的一些使用經驗:

  (1)你最好保證State的沒個節點都是immutable的,這樣確保在消費State的時候只需要進行簡單的引用就可以了。從而避免Deep Equal 的遍歷過程。也就是說你的state最好是鍵值的對象形式,避免數組形式的非state最底層值的形式。

  (2)reducer為純函數,如果判斷太多,可以使用combineReducers(),去組合reducer,分離reducer

  (3)合理管理你的state.並不需要所有的數據都在State裡面,雖然這也是可以,總之一句話,合適你的才是最好的,適用需要的代碼才是最好的。

  (4)建議所以的asyncAction都應該被管理。這很大程度上,可以提高用戶體驗。建議適用Promise async/await 去實現非同步的管理。

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 《設計模式:可復用面向對象軟體的基礎》是引導讀者走出軟體設計迷宮的指路明燈,凝聚了軟體開發界幾十年設計經驗的結晶。四位面向對象領域專家精心選取了具價值的設計實踐,加以分類整理和命名,並用簡潔而易於重用的形式表達出來。本書已經成為面向對象技術人員的聖經和詞典,書中定義的23個模式逐漸成為開發界技術交流 ...
  • 1.什麼是模塊化 將實現不同功能的代碼分別存放到不同的文件、類、方法中,每一個文件、類、方法都是一個實現單一功能的模塊。 2.為什麼使用模塊化 模塊化的文件、類、方法功能單一,可以相對獨立存在,不僅降低了對其他對象的依賴,而且層次清晰,便於維護。 3.模塊化的具體實現方法 通過增加模塊數目減小單個文 ...
  • IBM Rational Software Architect(RSA) -- IBM軟體開發平臺的一部分 – 是IBM在2003年二月併購Rational以來,首次發佈的Rational產品。改進過的軟體開發平臺在集成和易用性上達到一個新的層次。算是Rational Rose是的一個替代品。 Ra ...
  • 介面隔離原則(Interface Segregation Principle, ISP):使用多個專門的介面,而不使用單一的總介面,即客戶端不應該依賴那些它不需要的介面。 從介面隔離原則的定義可以看出,他似乎跟SRP有許多相似之處。 是的其實ISP和SRP都是強調職責的單一性, 介面隔離原則告訴我們 ...
  • 微服務的歷史背景 微服務架構的產生和流行並不是偶然的,它是多重因素推動下的必然結果,下麵通過對傳統MVC垂直架構面臨的挑戰進行相關分析,來瞭解微服務化所帶來的變化。 研發和運維成本高 1、代碼重覆率高 1)從技術架構角度看,傳統垂直架構的特點是本地API介面調用,不存在業務的拆分和互相調用,使用到上 ...
  • 模板方法模式的定義 在一個方法中定義一個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。 模板方法模式的類圖 在我們使用的框架中,很多地方都用到了模板方法模式。畢竟框架要對用戶是可擴展的,所以會封裝了一些模板方法,然後部分具體的實現交由子 ...
  • 2017年5月28日,晴,心情還不錯。 昨晚和同事擼串,回來後繼續威士忌走起,喝到凌晨2點多,聊的甚歡。彼此分享了很多自己成長過程中的故事,相互之間有了進一步的瞭解,友情又進了一步。在以後的時光里,願珍惜,共勉,我的朋友們! 昨下午同事胡幫我測了一下自己負責的模塊,發現了一些小問題,馬上著手修BUG ...
  • 《圖靈原創:Node.js開髮指南》首先簡要介紹Node.js,然後通過各種示例講解Node.js的基本特性,再用案例式教學的方式講述如何用Node.js進行Web開發,接著探討一些Node.js進階話題,最後展示如何將一個Node.js應用部署到生產環境中。 《圖靈原創:Node.js開髮指南》面 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...