亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

記React connect的幾種寫法(小結)

2024-05-06 16:46:09
字體:
來源:轉載
供稿:網友

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

連接 React 組件與 Redux store。

連接操作不會改變原來的組件類,反而返回一個新的已與 Redux store 連接的組件類。

參數

[mapStateToProps(state, [ownProps]): stateProps] (Function): 如果定義該參數,組件將會監聽 Redux store 的變化。任何時候,只要 Redux store 發生改變,mapStateToProps 函數就會被調用。該回調函數必須返回一個純對象,這個對象會與組件的 props 合并。如果你省略了這個參數,你的組件將不會監聽 Redux store。如果指定了該回調函數中的第二個參數 ownProps,則該參數的值為傳遞到組件的 props,而且只要組件接收到新的 props,mapStateToProps 也會被調用。

[mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function): 如果傳遞的是一個對象,那么每個定義在該對象的函數都將被當作 Redux action creator,而且這個對象會與 Redux store 綁定在一起,其中所定義的方法名將作為屬性名,合并到組件的 props 中。如果傳遞的是一個函數,該函數將接收一個 dispatch 函數,然后由你來決定如何返回一個對象,這個對象通過 dispatch 函數與 action creator 以某種方式綁定在一起(提示:你也許會用到 Redux 的輔助函數 bindActionCreators())。如果你省略這個 mapDispatchToProps 參數,默認情況下,dispatch 會注入到你的組件 props 中。如果指定了該回調函數中第二個參數 ownProps,該參數的值為傳遞到組件的 props,而且只要組件接收到新 props,mapDispatchToProps 也會被調用。

[mergeProps(stateProps, dispatchProps, ownProps): props] (Function): 如果指定了這個參數,mapStateToProps() 與 mapDispatchToProps() 的執行結果和組件自身的 props 將傳入到這個回調函數中。該回調函數返回的對象將作為 props 傳遞到被包裝的組件中。你也許可以用這個回調函數,根據組件的 props 來篩選部分的 state 數據,或者把 props 中的某個特定變量與 action creator 綁定在一起。如果你省略這個參數,默認情況下返回 Object.assign({}, ownProps, stateProps, dispatchProps) 的結果。

[options] (Object) 如果指定這個參數,可以定制 connector 的行為。

[pure = true] (Boolean): 如果為 true,connector 將執行 shouldComponentUpdate 并且淺對比 mergeProps 的結果,避免不必要的更新,前提是當前組件是一個“純”組件,它不依賴于任何的輸入或 state 而只依賴于 props 和 Redux store 的 state。默認值為 true。 

[withRef = false] (Boolean): 如果為 true,connector 會保存一個對被包裝組件實例的引用,該引用通過 getWrappedInstance() 方法獲得。默認值為 false

返回值

根據配置信息,返回一個注入了 state 和 action creator 的 React 組件。

第一種

最普通,最常見,delllee和官網第寫法。

import React, { Component } from 'react';import {connect} from 'react-redux';import { Button } from 'antd-mobile';import { addGunAction , removeGunAction , removeGunAsync}from './store/actionCreators'class App extends Component { render() {  console.log();  return (   <div className="App">    <p>{this.props.gun}</p>    <Button type="ghost" size="small" inline onClick={this.props.handeladd}>+</Button>    <Button type="ghost" size="small" inline onClick={this.props.handeljian}>-</Button>    <Button type="ghost" size="small" inline onClick={this.props.handelmanjian}>慢-</Button>   </div>  ); }}const mapStateToProps=(state)=>({  gun:state.gun})const mapDispachToProps=(dispatch)=>({  handeladd(){   dispatch(addGunAction())  },  handeljian(){   dispatch(removeGunAction())  },  handelmanjian(){   dispatch(removeGunAsync())  }})export default connect(mapStateToProps,mapDispachToProps)(App);

第二種

初次接觸,感覺有點繞,不太好理解,為什么點擊了,直接就派發action了?

import React, { Component } from 'react';import {connect} from 'react-redux';import { Button } from 'antd-mobile';import { addGunAction , removeGunAction , removeGunAsync}from './store/actionCreators'class App extends Component { render() {  console.log();  return (   <div className="App">    <p>{this.props.gun}</p>    {/*不用像第一種那樣,點擊調用一個方法,方法里再派發action    這種直接點擊派發action就可以*/}    <Button type="ghost" size="small" inline onClick={this.props.addGunAction}>+</Button>    <Button type="ghost" size="small" inline onClick={this.props.removeGunAction}>-</Button>    <Button type="ghost" size="small" inline onClick={this.props.removeGunAsync}>慢-</Button>   </div>  ); }}const mapStateToProps=(state,ownProps)=>({  gun:state.gun})//這些action已經自動有了dispatch的功能const actionCreators={ addGunAction , removeGunAction , removeGunAsync}export default connect(mapStateToProps,actionCreators)(App);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
热99精品里视频精品| 色在人av网站天堂精品| 国精产品一区一区三区有限在线| 国产一区二区三区在线播放免费观看| 亚洲欧美在线第一页| 亚洲第一视频网站| 欧美福利小视频| 福利视频一区二区| 中国china体内裑精亚洲片| 亚洲免费av网址| 中文字幕久精品免费视频| 亚洲欧美日韩国产精品| 国产美女精品视频免费观看| 日韩在线精品视频| 在线观看欧美日韩国产| 欧美裸体xxxx极品少妇软件| 日韩激情av在线免费观看| 欧美精品在线观看91| 国产视频精品自拍| 98精品国产自产在线观看| 午夜精品久久久久久久男人的天堂| 欧美与黑人午夜性猛交久久久| 国产精品91视频| 亚洲一区二区三区四区在线播放| 亚洲第一级黄色片| 日韩成人av在线播放| 日本精品性网站在线观看| 国产色婷婷国产综合在线理论片a| 国产精品露脸自拍| 精品国产电影一区| 欧美疯狂xxxx大交乱88av| 亚洲va男人天堂| 国产精品久久久久久搜索| 国产97在线视频| zzjj国产精品一区二区| 91精品国产电影| 亚洲精品国精品久久99热| 国产在线精品播放| 国产一区二区久久精品| 国产女同一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 成人欧美一区二区三区黑人| 播播国产欧美激情| 亚洲人成在线一二| 欧美成人亚洲成人日韩成人| 亚洲精品久久7777777| 国产成人精品一区| 一区国产精品视频| 久热在线中文字幕色999舞| 精品成人乱色一区二区| 国产精品免费观看在线| 国产成人啪精品视频免费网| 992tv成人免费影院| www.色综合| 亚洲电影免费观看高清完整版在线| 亚洲欧美国产精品专区久久| 日韩av在线高清| 日韩av在线最新| 欧美性一区二区三区| 日韩电影网在线| 亚洲色图15p| 亚洲少妇中文在线| 亚洲激情视频在线观看| 欧美日韩久久久久| 亚洲国产欧美一区二区三区久久| 66m—66摸成人免费视频| 亚洲欧美国产高清va在线播| 最近2019中文字幕大全第二页| 欧美成人午夜视频| 精品亚洲夜色av98在线观看| 一区二区三区 在线观看视| 亚洲已满18点击进入在线看片| 国产丝袜视频一区| 亚洲第一级黄色片| 国产va免费精品高清在线| 国产精品久久久久久婷婷天堂| 久久亚洲一区二区三区四区五区高| 亚洲综合最新在线| 91av在线看| 欧美精品久久久久久久久久| 91久久精品久久国产性色也91| 欧美精品xxx| 色婷婷久久一区二区| 日韩精品视频观看| 久久精品一偷一偷国产| 91探花福利精品国产自产在线| 欧美在线一区二区三区四| 日韩av在线高清| 久久大大胆人体| 欧美wwwxxxx| 亚洲人成在线一二| 蜜臀久久99精品久久久无需会员| 97国产精品视频人人做人人爱| 亚洲一区二区福利| 国产日韩欧美综合| 亚洲一区999| 亚洲一区二区三区乱码aⅴ| 动漫精品一区二区| 亚洲日韩中文字幕| 97免费视频在线播放| 亚洲国产日韩欧美在线99| 欧美在线xxx| 黄网站色欧美视频| 色综合久久中文字幕综合网小说| 欧美午夜性色大片在线观看| 国产精品视频一区二区高潮| 91香蕉嫩草神马影院在线观看| 日韩中文字幕网| 精品久久中文字幕| 日韩av影视在线| 国产精品aaaa| 欧美日韩不卡合集视频| 亚洲国语精品自产拍在线观看| 日本亚洲欧洲色α| 精品国产一区二区在线| 午夜精品久久久久久99热| 欧美在线精品免播放器视频| 91精品国产电影| 国产精品视频999| 91色琪琪电影亚洲精品久久| 欧美成人免费在线观看| 精品福利在线看| 日韩精品视频观看| 中文字幕日韩免费视频| 国产ts一区二区| 亚洲精品国精品久久99热一| 91国内免费在线视频| 国产欧美日韩中文字幕| 国产亚洲精品久久久优势| 亚洲精品97久久| 成人h视频在线观看播放| 国产亚洲精品久久久久久777| 国产99久久精品一区二区| 91av在线播放视频| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品网红直播| 日韩高清免费在线| 日韩一中文字幕| 欧美最猛性xxxxx(亚洲精品)| 91在线色戒在线| 国产噜噜噜噜噜久久久久久久久| 国模精品视频一区二区| 91福利视频在线观看| 欧美大片免费观看| 91精品国产91久久久久久不卡| 精品国产成人av| 欧美一区二区三区四区在线| 一区二区三区精品99久久| 国产午夜一区二区| 欧美在线免费看| 国产婷婷97碰碰久久人人蜜臀| 欧美wwwwww| 九九久久久久久久久激情| 亚洲天堂成人在线| 亚洲欧美一区二区三区四区| 亚洲成人动漫在线播放| 日韩成人在线网站| 欧洲日本亚洲国产区| 少妇久久久久久| 久久久久久欧美| 国产欧美精品在线播放| 亚洲欧美一区二区三区四区| 亚洲欧美变态国产另类| 不卡av电影院|