亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Redux解決了什么問(wèn)題

pinecone / 860人閱讀

摘要:它搭配解決了組件之間通信問(wèn)題,這個(gè)通信問(wèn)題,是組件和其它組件之間也可以跨層通信,不需要一層一層的把,父組件的數(shù)據(jù)往下傳遞。庫(kù)解決了什么問(wèn)題解決了跨層組件通信問(wèn)題。

忽略此文,不敢浪費(fèi)你的時(shí)間 Redux是什么?

Redux是Facebook提出一個(gè)數(shù)據(jù)狀態(tài)管理的庫(kù),也可以說(shuō)框架。它搭配React解決了組件之間通信問(wèn)題,這個(gè)通信問(wèn)題,是組件和其它組件之間也可以跨層通信,不需要一層一層的把,父組件的數(shù)據(jù)往下傳遞。這會(huì)增加代碼復(fù)雜度和維護(hù)的復(fù)雜度。

如果使用React.createContext的API也可以實(shí)現(xiàn)跨層通信,你可以多帶帶寫(xiě)一個(gè)模塊去封裝Context.Provider和Context.Consumer,只有在根組件使用Context.Provider后,需要共享Context上的數(shù)據(jù)的組件,都可以通過(guò)引入Context.Consumer組件去獲取公共的數(shù)據(jù)。哪個(gè)組件需要頂層組件的數(shù)據(jù),就必須引入Context.Consumer。

  //context.js
  export default Context  = createContext("")
 //app.js
 let store = createStore(reducer)
 
    
 
 import Context from "./context.js"
 
    {(data) => (
{data.time}
)}
store

整個(gè)Application的數(shù)據(jù)保存地。這里有一切應(yīng)用所共享的數(shù)據(jù),后臺(tái)交互和用戶輸入的數(shù)據(jù)都在這里管理。Redux提供了一個(gè)方法,創(chuàng)造整個(gè)應(yīng)用數(shù)據(jù)的store,只需要使用es6模塊機(jī)制,import命名可以輸出我們需要的接口。

import { createStore } from "redux"
//創(chuàng)建store必須,外部注入數(shù)據(jù)和改變整個(gè)state的邏輯
let store = createStore(reducer,initalPreLoadState)
action

描述界面的交互和行為的對(duì)象,用戶要做什么事,必須發(fā)送一個(gè)action對(duì)象到store的dispatch函數(shù)里面,根據(jù)提供reducer去匹配action.type,如果沒(méi)有type匹配對(duì)了,會(huì)執(zhí)行接下里的邏輯,更新整個(gè)store里面該改變的數(shù)據(jù)。

store.dispatch的源代碼里,對(duì)傳入的action是否為對(duì)象做了判斷,是否有type屬性也做了判斷。如果action沒(méi)有問(wèn)題,那么執(zhí)行定義傳入的reducer(state,action)函數(shù),

reducer

reducer是一個(gè)純函數(shù),什么樣的輸入就得出什么樣的輸出,怎么理解呢? store.dispatch發(fā)送了action,當(dāng)然,這個(gè)store.dispatch早就放在了標(biāo)簽的事件里,等著用戶去觸發(fā)。action對(duì)象來(lái)到store.dispatch函數(shù)內(nèi)存,有了action的數(shù)據(jù),執(zhí)行reducer函數(shù),去匹配類型,執(zhí)行對(duì)應(yīng)的代碼。

    function add(state=0,action) {
        switch(action.type){
            case "add":
                return state + 1
            case "decre":
                return state - 1
            default:
                return state
        }
    }
改變state的唯一方式

state和view一一對(duì)應(yīng),state改變了,view也就改變了。state如何改變,界面的標(biāo)簽上,給定的事件,store.dispatch函數(shù),該函數(shù)的參數(shù)是action對(duì)象,描述要做什么事,觸發(fā)此函數(shù),傳遞給整個(gè)應(yīng)用的store,會(huì)執(zhí)行store.dispatch函數(shù)里的reducer函數(shù),去更新state,store.subscribe函數(shù)監(jiān)聽(tīng)store的數(shù)據(jù)發(fā)生變化,便會(huì)觸發(fā)此函數(shù)去更新React的根組件。

Redux沒(méi)有解決什么?

redux庫(kù)提供了核心一個(gè)API,createStore函數(shù),可以把整個(gè)應(yīng)用的數(shù)據(jù)也就是存放在store里面,但是它真的只提供了數(shù)據(jù),對(duì)于組件之間的通信,redux庫(kù)是沒(méi)有解決的。store里面的數(shù)據(jù)還是得從頂層組件往下傳,一層一層傳。

如果要跨組件通信,頂層組件與任意組件通信,redux必須借助react的Context的API,結(jié)合Redux和React結(jié)合成一個(gè)庫(kù),這樣提供的兩個(gè)API,就可以跨層通信。

React-Redux庫(kù)解決了什么問(wèn)題

解決了跨層組件通信問(wèn)題。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104048.html

相關(guān)文章

  • 【譯】Redux 還是 Mobx,讓我來(lái)解決你的困惑!

    摘要:我現(xiàn)在寫(xiě)的這些是為了解決和這兩個(gè)狀態(tài)管理庫(kù)之間的困惑。這甚至是危險(xiǎn)的,因?yàn)檫@部分人將無(wú)法體驗(yàn)和這些庫(kù)所要解決的問(wèn)題。這肯定是要第一時(shí)間解決的問(wèn)題。函數(shù)式編程是不斷上升的范式,但對(duì)于大部分開(kāi)發(fā)者來(lái)說(shuō)是新奇的。規(guī)模持續(xù)增長(zhǎng)的應(yīng) 原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用...

    txgcwm 評(píng)論0 收藏0
  • Redux概念之一: Redux簡(jiǎn)介

    摘要:應(yīng)用這說(shuō)明并不是單指設(shè)計(jì)給用的,它是獨(dú)立的一個(gè)函數(shù)庫(kù),可通用于各種應(yīng)用。在數(shù)據(jù)流的最后,要觸發(fā)最上層組件的,然后進(jìn)行整體的重新渲染工作。單純?cè)诘膶?duì)象上是沒(méi)有辦法使用,要靠額外的函數(shù)庫(kù)才能這樣作,這是一定要使用類似像這種函數(shù)庫(kù)的主要原因。 Redux的官網(wǎng)中用一句話來(lái)說(shuō)明Redux是什么: Redux是針對(duì)JavaScript應(yīng)用的可預(yù)測(cè)狀態(tài)容器 這句話雖然簡(jiǎn)短,其實(shí)是有幾個(gè)涵義的: ...

    cjie 評(píng)論0 收藏0
  • React 328道最全面試題(持續(xù)更新)

    摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅(jiān)持每天花分鐘來(lái)學(xué)習(xí)與思考。 今天的React題沒(méi)有太多的故事…… 半個(gè)月前出了248個(gè)Vue的知識(shí)點(diǎn),受到很多朋友的關(guān)注,都強(qiáng)烈要求再出多些React相前的面試題,受到大家的邀請(qǐng),我又找了20多個(gè)React的使用者,他們給出了328道React的面試題,由我整理好發(fā)給大家,同時(shí)發(fā)布在了前端面試每日3+1的React專題,希望對(duì)大家有所幫助,同時(shí)大...

    kumfo 評(píng)論0 收藏0
  • 高級(jí)前端面試題大匯總(只有試題,沒(méi)有答案)

    摘要:面試題來(lái)源于網(wǎng)絡(luò),看一下高級(jí)前端的面試題,可以知道自己和高級(jí)前端的差距。 面試題來(lái)源于網(wǎng)絡(luò),看一下高級(jí)前端的面試題,可以知道自己和高級(jí)前端的差距。有些面試題會(huì)重復(fù)。 使用過(guò)的koa2中間件 koa-body原理 介紹自己寫(xiě)過(guò)的中間件 有沒(méi)有涉及到Cluster 介紹pm2 master掛了的話pm2怎么處理 如何和MySQL進(jìn)行通信 React聲明周期及自己的理解 如何...

    kviccn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<