React 快速上手 5 掌握Redux 2

2022-03-11 00:38:28 字數 2317 閱讀 9163

本文部分內容參考阮一峰的redux教程。

react-redux執行機制

我覺得這張圖清楚地描述react-redux的執行機制:

react-redux將元件劃分為兩類,第一類是ui元件:

比如,我們的例項計數器就是乙個ui元件,我們只寫了ui的呈現規則,並且所有資料都是由this.props提供:

class counter extends react.component  = this.props;

return(

提交 )

}}

第二類元件是容器元件:

不過,react-redux 規定,所有的 ui 元件都由使用者提供,容器元件則是由 react-redux 自動生成

connect負責從ui元件生成容器元件

如下,一行語句,我們就將獲得由ui元件得到的容器元件

這個函式由兩個引數,mapstatetoprops和mapdispatchtoprops構成。它們主要定義業務邏輯,前者負責輸入邏輯,即容器元件如何將state轉換為props交給ui元件,來供容器元件進行ui渲染後者負責輸出邏輯,用來建立 ui 元件的引數到store.dispatch方法的對映

如下,我們定義mapstatetoprops,它將state中的count欄位取出對映到value屬性,然後交給ui元件:

function mapstatetoprops(state) 

}

然後,我們定義mapdispatchtoprops,他將store.dispatch方法對映到onsubmitclick屬性上,這樣ui元件通過props.onsubmitclick,就可以間接呼叫store.dispatch,實現狀態更新。

function mapdispatchtoprops(dispatch) )

}}

connect方法生成容器元件以後,需要讓容器元件拿到state物件,才能生成 ui 元件的引數。一種解決方法是將state物件作為引數,傳入容器元件。但是,這樣做比較麻煩,尤其是容器元件可能在很深的層級,一級級將state傳下去就很麻煩。

react-redux 提供provider元件,可以讓容器元件拿到state

import  from 'react-redux'

import from 'redux'

render(

document.getelementbyid('root')

)

import react,  from 'react'

import proptypes from 'prop-types'

import reactdom from 'react-dom'

import from 'redux'

import from 'react-redux'

// react component

class counter extends component = this.props

return (

increase)}}

counter.proptypes =

// action

const increaseaction =

// reducer

function counter(state = , action)

default:

return state

}}// store

const store = createstore(counter)

// map redux state to component props

function mapstatetoprops(state)

}// map redux actions to component props

function mapdispatchtoprops(dispatch)

}// connected component

mapstatetoprops,

mapdispatchtoprops

)(counter)

reactdom.render(

document.getelementbyid('root')

)

React 快速上手 2 元件通訊

父元件可以通過設定子元件的props屬性進行向子元件傳值,同時也可以傳遞乙個 函式,來獲取到子元件內部的資料。效果演示 子元件是輸入框,父元件及時獲取到輸入框內容然後更新右邊標籤。父元件傳遞 函式 父元件傳遞乙個方法,即updatespan,用於更新span內容。class father exten...

html5之快速上手canvas

context物件的beginpath方法表示開始繪製路徑,moveto x,y 方法設定線段的起點,lineto x,y 方法設定線段的終點,stroke方法用來給透明的線段著色。moveto和lineto方法可以多次使用。最後,還可以使用closepath方法,自動繪製一條當前點到起點的直線,形...

ibatis 快速上手

簡介 例子 現在我們我們通過乙個簡單的案例,了解如何通過ibatis解決資料訪問問題。現在有有乙個資料庫,資料庫裡面有一張人員資訊表 需求是這樣 通過乙個web應用程式顯示人員資訊表裡面的資訊,並且可以新增 修改 刪除人員記錄 乙個並不複雜的案例,但是它覆蓋所有開發首先要學習的內容。第1步 the ...