首頁 web前端 js教程 redux和react有啥差別

redux和react有啥差別

Dec 03, 2020 am 10:40 AM
react redux

redux和react的差異有:1、redux是一個JavaScript狀態容器,而react是Facebook推出的一個用來建構使用者介面的JavaScript函式庫;2、redux主要提供狀態管理,而react主要用於建構UI等等。

redux和react有啥差別

本教學操作環境:windows7系統、React17版,DELL G3電腦,此方法適用於所有品牌電腦。

推薦:《javascript基礎教學#》

#redux

redux是一個JavaScript狀態容器,主要提供狀態管理。可以運行於服務端,客戶端,原生應用程式。除了支援React外還支援其他的UI框架,體積小,只有2kb。當要與React一起使用的時候,可以使用react-redux插件來進一步提升我們的開發體驗。

可以透過呼叫對應的API或是以對應的機制改變這個容器中的資料就可以了,其他元件可以透過主動重新從容器中取得新資料來重新渲染。

此外這個容器還需支援發布訂閱機制,也就是當某個資料改變了,關心這個資料的元件就產即會得到通知。

react

react是 Facebook 推出的一個用來建立使用者介面的 JavaScript 函式庫。 React主要用於建立UI,許多人認為 React 是 MVC 中的 V(視圖)。 React 擁有較高的效能,程式碼邏輯非常簡單,越來越多的人開始關注和使用它。

React 是一個為資料提供渲染為 HTML 視圖的開源 JavaScript 函式庫。 React 視圖通常採用包含以自訂 HTML 標記規定的其他元件的元件渲染。 React 為程式設計師提供了一個子元件不能直接影響外層元件的模型,資料改變時對 HTML 文件的有效更新,和現代單頁應用程式中元件之間乾淨的分離。

學會用自己的思想來理解React和Redux;不能光聽別人描述名詞,理解起來是很困難的。

從需求出發,看看使用React需要什麼:

1、React有props和state: props意味著父級分發下來的屬性,state意味著元件內部可以自行管理的狀態,整個React沒有資料向上回溯的能力,也就是說資料只能單向向下分發,或是自行內部消化。

理解這個是理解React和Redux的前提。

2、一般建置的React元件內部可能是一個完整的應用,它自己運作良好,你可以透過屬性作為API控制它。但更多的時候發現React根本無法讓兩個元件互相交流,使用對方的資料。

然後這時候不透過DOM溝通(也就是React體制內)解決的唯一方法就是提升state,將state放到共有的父元件中來管理,再作為props分發回子元件。

3、子元件改變父元件state的辦法只能是透過onClick觸發父元件宣告好的回調,也就是父元件提前宣告好函數或方法作為契約描述自己的state會如何變化,再將它同樣作為屬性交給子組件使用。

這樣就出現了一個模式:資料總是單向從頂層向下分發的,但是只有子元件回呼在概念上可以回到state頂層影響資料。這樣state一定程度上是響應式的。

4、為了面對所有可能的擴充問題,最容易想到的辦法就是把所有state集中放到所有元件頂層,然後分發給所有元件。

5. 為了有更好的state管理,需要一個函式庫來作為更專業的頂層state分發給所有React應用,這就是Redux。讓我們回來看看重現`上面結構的需求:

需要回呼通知state (等同於回呼參數) -> action

需要根據回呼處理(等同於父級方法) -> reducer

需要state (等同於總狀態) -> store

#對Redux來說只有這三個要素:

#action是純粹聲明式的資料結構,只提供事件的所有要素,不提供邏輯。

reducer是一個匹配函數,action的發送是全局的:所有的reducer都可以捕捉到並匹配與自己相關與否,相關就拿走action中的要素進行邏輯處理,修改store中的狀態,不相關就不對state做處理原樣回傳。

store負責儲存狀態並且可以被react api回調,發布action.

當然一般不會直接把兩個函式庫拿來用,還有一個binding叫react-redux, 提供一個Provider和connect。很多人其實看懂了redux卡在這裡。

Provider是一個普通元件,可以作為頂層app的分發點,它只需要store屬性就可以了。它會將state分發給所有被connect的元件,不管它在哪裡,嵌套多少層。

connect是真正的重點,它是一個科里化函數,意思是先接受兩個參數(資料綁定mapStateToProps和事件綁定mapDispatchToProps),再接受一個參數(將要綁定的元件本身):

mapStateToProps:建構好Redux系統的時候,它會被自動初始化,但是你的React元件並不知道它的存在,因此你需要分類出你需要的Redux狀態,所以你需要綁定一個函數,它的參數是state,簡單回傳你關心的幾個值。

mapDispatchToProps:宣告好的action當作回呼,也可以被注入到元件裡,就是透過這個函數,它的參數是dispatch,透過redux的輔助方法bindActionCreator綁定所有action以及參數的dispatch,就可以作為屬性在元件裡面作為函數簡單使用了,不需要手動dispatch。這個mapDispatchToProps是可選的,如果不傳這個參數redux會簡單把dispatch當作屬性注入給元件,可以手動當做store.dispatch使用。

這也是為什麼要科里化的原因。

做好以上流程Redux和React就可以工作了。

簡單來說就是:

1.頂層分發狀態,讓React元件被動地渲染。

2.監聽事件,事件有權利回到所有狀態頂層影響狀態。

總結:

react需要一個管理狀態的管理者,redux就扮演這個角色進行頂層分發狀態,改變react元件的渲染。

以上是redux和react有啥差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

React前後端分離指南:如何實作前後端的解耦與獨立部署 React前後端分離指南:如何實作前後端的解耦與獨立部署 Sep 28, 2023 am 10:48 AM

React前後端分離指南:如何實現前後端的解耦和獨立部署,需要具體程式碼範例在當今的Web開發環境中,前後端分離已經成為一種趨勢。透過將前端和後端程式碼分開,可以讓開發工作更加靈活、高效,並且方便進行團隊協作。本文將介紹如何使用React實現前後端分離,從而實現解耦和獨立部署的目標。首先,我們要先理解什麼是前後端分離。傳統的Web開發模式中,前端和後端是耦合在

如何利用React和RabbitMQ建立可靠的訊息應用 如何利用React和RabbitMQ建立可靠的訊息應用 Sep 28, 2023 pm 08:24 PM

如何利用React和RabbitMQ建立可靠的訊息傳遞應用程式引言:現代化的應用程式需要支援可靠的訊息傳遞,以實現即時更新和資料同步等功能。 React是一種流行的JavaScript庫,用於建立使用者介面,而RabbitMQ是一種可靠的訊息傳遞中間件。本文將介紹如何結合React和RabbitMQ建立可靠的訊息傳遞應用,並提供具體的程式碼範例。 RabbitMQ概述:

React Router使用指南:如何實現前端路由控制 React Router使用指南:如何實現前端路由控制 Sep 29, 2023 pm 05:45 PM

ReactRouter使用指南:如何實現前端路由控制隨著單頁應用的流行,前端路由成為了一個不可忽視的重要部分。 ReactRouter作為React生態系統中最受歡迎的路由庫,提供了豐富的功能和易用的API,使得前端路由的實作變得非常簡單和靈活。本文將介紹ReactRouter的使用方法,並提供一些具體的程式碼範例。安裝ReactRouter首先,我們需要

PHP、Vue和React:如何選擇最適合的前端框架? PHP、Vue和React:如何選擇最適合的前端框架? Mar 15, 2024 pm 05:48 PM

PHP、Vue和React:如何選擇最適合的前端框架?隨著互聯網技術的不斷發展,前端框架在Web開發中起著至關重要的作用。 PHP、Vue和React作為三種代表性的前端框架,每一種都具有其獨特的特徵和優勢。在選擇使用哪種前端框架時,開發人員需要根據專案需求、團隊技能和個人偏好做出明智的決策。本文將透過比較PHP、Vue和React這三種前端框架的特徵和使

Java框架與前端React框架的整合 Java框架與前端React框架的整合 Jun 01, 2024 pm 03:16 PM

Java框架與React框架的整合:步驟:設定後端Java框架。建立專案結構。配置建置工具。建立React應用程式。編寫RESTAPI端點。配置通訊機制。實戰案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

如何利用React開發一個響應式的後台管理系統 如何利用React開發一個響應式的後台管理系統 Sep 28, 2023 pm 04:55 PM

如何利用React開發一個響應式的後台管理系統隨著互聯網的快速發展,越來越多的企業和組織需要一個高效、靈活、易於管理的後台管理系統來處理日常的操作事務。 React作為目前最受歡迎的JavaScript庫之一,提供了一種簡潔、高效和可維護的方式來建立使用者介面。本文將介紹如何利用React開發一個響應式的後台管理系統,並給出具體的程式碼範例。建立React專案首先

vue.js vs.反應:特定於項目的考慮因素 vue.js vs.反應:特定於項目的考慮因素 Apr 09, 2025 am 12:01 AM

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

react有哪些閉包 react有哪些閉包 Oct 27, 2023 pm 03:11 PM

react有事件處理函數、useEffect和useCallback、高階元件等等閉包。詳細介紹:1、事件處理函數閉包:在React中,當我們在元件中定義事件處理函數時,函數會形成一個閉包,可以存取元件作用域內的狀態和屬性。這樣可以在事件處理函數中使用元件的狀態和屬性,實現互動邏輯;2、useEffect和useCallback中的閉包等等。

See all articles