溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redux是不是必須搭配react

發(fā)布時(shí)間:2020-12-23 09:47:42 來源:億速云 閱讀:147 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)redux是不是必須搭配react的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

redux不是必須搭配react的,除了支持React外還支持其他的UI框架;而且redux并不是適合所有項(xiàng)目所有應(yīng)用的;在react中,能不用redux就不用redux。

redux是一個(gè)JavaScript狀態(tài)容器,主要提供狀態(tài)管理??梢赃\(yùn)行于服務(wù)端,客戶端,原生應(yīng)用。除了支持React外還支持其他的UI框架,體積小,只有2kb。當(dāng)要與React一起使用的時(shí)候,可以使用react-redux插件來進(jìn)一步提升我們的開發(fā)體驗(yàn)。

在開始今天的主題前,有幾個(gè)點(diǎn)我需要強(qiáng)調(diào)一下

react的state和redux的state根本是完全不沾邊的兩個(gè)東西,切記不要混為一談。react的state是存在于類組件中的一個(gè)存放自身變量的屬性,redux的state整個(gè)應(yīng)用的store中的某一個(gè)namespace下的狀態(tài)。二者沒有任何關(guān)系。

redux是一個(gè)獨(dú)立于react的,你可以選擇使用也可以選擇不適用,如果您不是使用的基于redux的腳手架,那么想使用redux您是需要單獨(dú)引用的。react包中并沒有redux。

假如您的應(yīng)用中要使用redux,您是需要將react和redux關(guān)聯(lián)起來的,這里有一個(gè)包叫react-redux,是用來關(guān)聯(lián)react和redux的,其中有一個(gè)高階函數(shù)叫connect,它接受兩個(gè)方法,mapStateToProps和mapDispatchToProps是這兩個(gè)方法將redux的state注入到了react的props中。

上面是帶大家回顧redux的一些基本知識(shí)點(diǎn),接下來我們進(jìn)入主題。

redux的使用場(chǎng)景

如果您的React應(yīng)用中狀態(tài)十分多,難以維護(hù)的時(shí)候,這個(gè)時(shí)候redux是個(gè)不錯(cuò)的選擇。(這里所說的狀態(tài)就是react的state)

如果您需要數(shù)據(jù)共享,即多個(gè)react組件需要用同一個(gè)數(shù)據(jù)源。

如果您需要一些全局性的狀態(tài)控制,比如應(yīng)用中的當(dāng)前登錄人,我們說不定會(huì)在哪個(gè)組件中使用登錄人信息,如果我們將它注冊(cè)到全局redux中,那么我們就無需關(guān)系哪個(gè)組件要用了,我們用的時(shí)候直接從全局redux中取就行

某組件的業(yè)務(wù)邏輯過于復(fù)雜,在react組件中處理這些數(shù)據(jù)太過繁瑣,我們可以考慮將部分邏輯拆分到redux中。

使用redux可以將數(shù)據(jù)和UI分離開,如果您為了實(shí)現(xiàn)這樣的效果,您可以嘗試使用redux.

我們?yōu)槭裁匆獪p少redux的使用

看過阮一峰大哥博客的同學(xué)一定看到過這幾句話

如果你不知道是否需要 Redux,那就是不需要它。

只有遇到 React 實(shí)在解決不了的問題,你才需要 Redux 。

所以redux并不是適合所有項(xiàng)目所有應(yīng)用的。

使用redux需要?jiǎng)?chuàng)建很多模板代碼,會(huì)讓state的更新變得十分復(fù)雜,這一點(diǎn)誰用誰知道,哈哈。

使用過多的redux會(huì)讓應(yīng)用失去靈活性

Redux 帶來了函數(shù)式編程、不可變性思想等等,為了配合這些理念,開發(fā)者必須要寫很多“模式代碼(boilerplate)”,繁瑣以及重復(fù)是開發(fā)者不愿意容忍的。當(dāng)然也有很多 hack 旨在減少 boilerplate,但目前階段,可以說 Redux 天生就附著繁瑣;

  • 使用 Redux,那么你的應(yīng)用就要用 objects 或者 arrays 描述狀態(tài);OMG!

  • 使用 Redux,那么你的應(yīng)用就要使用 plain objects 即 actions ,來描述變化;OMG!

  • 使用 Redux,那么你的應(yīng)用就要使用純函數(shù)去處理變化;OMG!

應(yīng)用中,狀態(tài)很多都要抽象到 store,那么何時(shí)使用 local states 何時(shí)接入 Redux store?不能痛痛快快地寫業(yè)務(wù),一個(gè)變化就要對(duì)應(yīng)編寫 action(action creator),reducer 等等;

和響應(yīng)式結(jié)合函數(shù)式的 Mobx 相比,編程體驗(yàn)“打折扣”

以上是引用了網(wǎng)友的一段話,可見redux的過多使用時(shí)存在很多弊端的,我這里就不一一羅列他的弊端了。感興趣的同學(xué)可以去自己搜一下,總是,我認(rèn)為能不用redux就不用redux

讀到這里,我想解決了一些讀者心中的疑問“我們什么時(shí)候用react的state什么時(shí)候用redux的state?”答案就很明確了。

redux畢竟是一個(gè)比較成功的框架,其中的數(shù)據(jù)流也是很經(jīng)典,解決了不少難題,任何東西都有利弊,我們只要做好權(quán)衡,相信我們可以寫出更加優(yōu)秀的應(yīng)用。

感謝各位的閱讀!關(guān)于redux是不是必須搭配react就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI