最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react-redux的connect用法詳解

 更新時間:2023年01月31日 11:24:38   作者:一杯清泉  
react-redux是react官方推出的redux綁定庫,React-Redux 將所有組件分成兩大類一個是UI組件和容器組件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一、UI組件和容器組件

React-Redux 將所有組件分成兩大類:UI 組件和容器組件。

  • UI 組件:只負責 UI 的呈現(xiàn),不帶有任何業(yè)務邏輯,沒有狀態(tài)state值的使用,所以的參數(shù)是通過this.props獲取。
  • 容器組件:負責管理數(shù)據(jù)和業(yè)務邏輯,不負責 UI 的呈現(xiàn),有業(yè)務邏輯,并且使用Redux提供的API。

對于上面的AppUI就是一UI組件,App就是一個容器組件。

二、connect

React-Redux提供connect方法,用于從 UI 組件生成容器組件。connect的意思,就是將這兩種組件連起來。

1、導入

import { connect } from 'react-redux'

2、使用

export default connect(mapStateToProps, mapDispatchToProps)(AppUI);

connect方法可以省略mapStateToProps參數(shù),那樣的話,UI 組件就不會訂閱Store,就是說 Store 的更新不會引起 UI 組件的更新。

  • mapStateToProps:更新props————>作為輸入源。返回一個對象,key為UI界面對應的名稱,value為state處理的結(jié)果
  • mapDispatchToProps:更新action————>作為輸出源。觸發(fā)action更新reducer,進而更新state,從而驅(qū)動參數(shù)1變化,引起UI數(shù)據(jù)的變化

通過這個兩參數(shù)的自動調(diào)用方式,將UI和業(yè)務邏輯分開,UI組件通過props顯示,沒有任何業(yè)務邏輯,容器組件負責邏輯業(yè)務。下面詳解這兩個參數(shù)

三、mapStateToProps

建立一個從(外部的)state對象到(UI 組件的)props對象的映射關(guān)系。作為函數(shù),mapStateToProps執(zhí)行后應該返回一個對象,里面的每一個鍵值對就是一個映射。

mapStateToProps會訂閱 Store,每當state更新的時候,就會自動執(zhí)行,重新計算 UI 組件的參數(shù),從而觸發(fā) UI 組件的重新渲染。

mapStateToProps的第一個參數(shù)總是state對象,還可以使用第二個參數(shù),代表容器組件的props對象。使用ownProps作為參數(shù)后,如果容器組件的參數(shù)發(fā)生變化,也會引發(fā) UI 組件重新渲染。

下面以加減數(shù)字為例說明:

<div>
    <button style={{width: 40, height: 40}} onClick={onIncreaseClick}>+</button>
    <text style={{padding: 40}}>{value}</text>
    <button style={{width: 40, height: 40}} onClick={onReduceClick}>-</button>
</div>

1、一個參數(shù)

const mapStateToProps = (state) => {
    return {
         value: state.count //UI組件中需要什么參數(shù),對象中就寫哪些參數(shù)
     }
}

2、兩個參數(shù)

const mapStateToProps = (state, ownProps) => {
    return {
        value: state.count //UI組件中需要什么參數(shù),對象中就寫哪些參數(shù)
    }
}

四、mapDispatchToProps

mapDispatchToProps是connect函數(shù)的第二個參數(shù),用來建立 UI 組件的參數(shù)到store.dispatch方法的映射。也就是說,它定義了哪些用戶的操作應該當作 Action,傳給 Store。它可以是一個函數(shù),也可以是一個對象。

1、作為函數(shù)

如果mapDispatchToProps是一個函數(shù),會得到dispatch和ownProps(容器組件的props對象)兩個參數(shù)。作為函數(shù),應該返回一個對象,該對象的每個鍵值對都是一個映射,定義了 UI 組件的參數(shù)怎樣發(fā)出 Action。

dispach(action)發(fā)出消息。

const mapDispatchToProps = (dispatch, ownProps) => {
    return {
        onIncreaseClick: () => dispatch({type: 'increase'}),
        onReduceClick: () => dispatch({type: 'reduce'})
    }
}

2、作為對象

const mapDispatchToProps = {
    onIncreaseClick: () => ({type: 'increase'}),
    onReduceClick: () => ({type: 'reduce'})
};
const mapDispatchToProps = (dispatch) => ({
    onIncreaseClick() {
       dispatch({type: 'increase'})
    },
    onReduceClick() {
        dispatch({type: 'reduce'})
    }
})

這兩個使用的效果一樣。通過connect,store.subscribe也不需要了。通過connnect方法,最終的代碼:

import React, {Component} from 'react'
import {connect} from "react-redux";
 
class App extends Component {
 
    render() {
        const {value, onIncreaseClick, onReduceClick} = this.props
        return (
            <div>
                <button style={{width: 40, height: 40}} onClick={onIncreaseClick}>+</button>
                <text style={{padding: 40}}>{value}</text>
                <button style={{width: 40, height: 40}} onClick={onReduceClick}>-</button>
            </div>
        );
 
    }
}
 
const mapStateToProps = (state) => {
        return {
            value: state.count
        }
}
const mapDispatchToProps = (dispatch, ownProps) => {
    return {
        onIncreaseClick: () => dispatch({type: 'increase'}),
        onReduceClick: () => dispatch({type: 'reduce'})
    }
}
 
export default connect(mapStateToProps, mapDispatchToProps)(App);

五、Provider

1、導入

import {Provider} from "react-redux";

2、使用

Provider在根組件外面包了一層,這樣一來,App的所有子組件就默認都可以拿到state了

 <Provider store={store}>
            <App/>
 </Provider>

效果如下:http://localhost:3000/

到此這篇關(guān)于react-redux的connect用法詳解的文章就介紹到這了,更多相關(guān)react-redux的connect用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React中的useMemo 和 useEffect 執(zhí)行順序

    React中的useMemo 和 useEffect 執(zhí)行順序

    在 React 組件的渲染過程中,useMemo 和 useEffect 的執(zhí)行順序是不同的,本文給大家介紹React中的useMemo 和 useEffect 哪個先執(zhí)行,感興趣的朋友一起看看吧
    2025-01-01
  • React路由組件三種傳參方式分析講解

    React路由組件三種傳參方式分析講解

    本文主要介紹了React組件通信之路由傳參(react-router-dom),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React + webpack 環(huán)境配置的方法步驟

    React + webpack 環(huán)境配置的方法步驟

    本篇文章主要介紹了React + webpack 環(huán)境配置的方法步驟,詳解的介紹了開發(fā)環(huán)境的配置搭建,有興趣的可以了解一下
    2017-09-09
  • 淺談React高階組件

    淺談React高階組件

    這篇文章主要介紹了淺談React高階組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • React狀態(tài)提升案例介紹

    React狀態(tài)提升案例介紹

    這篇文章主要介紹了React狀態(tài)提升案例,所謂 狀態(tài)提升 就是將各個子組件的 公共state 提升到它們的父組件進行統(tǒng)一存儲、處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-04-04
  • React項目中動態(tài)插入HTML內(nèi)容的實現(xiàn)

    React項目中動態(tài)插入HTML內(nèi)容的實現(xiàn)

    本文主要介紹了React項目中動態(tài)插入HTML內(nèi)容的實現(xiàn),通過使用React的dangerouslySetInnerHTML屬性,我們可以將HTML內(nèi)容插入到組件中,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • React?Native系列之Recyclerlistview使用詳解

    React?Native系列之Recyclerlistview使用詳解

    這篇文章主要為大家介紹了React?Native系列之Recyclerlistview使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • React語法中設(shè)置TS校驗規(guī)則的步驟詳解

    React語法中設(shè)置TS校驗規(guī)則的步驟詳解

    這篇文章主要給大家介紹了React語法中如何設(shè)置TS校驗規(guī)則,文中有詳細的代碼示例供大家參考,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • 一文詳解React如何處理表單的復雜驗證邏輯

    一文詳解React如何處理表單的復雜驗證邏輯

    這篇文章主要為大家詳細介紹了React中如何處理表單的復雜驗證邏輯,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • React?Native?加載H5頁面的實現(xiàn)方法

    React?Native?加載H5頁面的實現(xiàn)方法

    這篇文章主要介紹了React?Native?加載H5頁面的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論

肇源县| 闽清县| 肥乡县| 汨罗市| 聂拉木县| 响水县| 乌拉特中旗| 鹤岗市| 从化市| 乡城县| 泾阳县| 巴林左旗| 灵丘县| 同江市| 耿马| 齐齐哈尔市| 水富县| 平果县| 太仓市| 武义县| 滁州市| 邯郸市| 贵溪市| 鸡泽县| 静安区| 武山县| 株洲市| 尉氏县| 万全县| 隆子县| 遂平县| 湛江市| 嘉兴市| 会东县| 拜城县| 扶余县| 连平县| 改则县| 象山县| 渝北区| 青海省|