国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 22:07:34
文檔

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

記React connect的幾種寫法(小結):connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options]) 連接 React 組件與 Redux store。 連接操作不會改變原來的組件類,反而返回一個新的已與 Redux store 連接的組件類。 參數 [mapStateToProps
推薦度:
導讀記React connect的幾種寫法(小結):connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options]) 連接 React 組件與 Redux store。 連接操作不會改變原來的組件類,反而返回一個新的已與 Redux store 連接的組件類。 參數 [mapStateToProps

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);

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

記React connect的幾種寫法(小結):connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options]) 連接 React 組件與 Redux store。 連接操作不會改變原來的組件類,反而返回一個新的已與 Redux store 連接的組件類。 參數 [mapStateToProps
推薦度:
標簽: 寫法 React connect
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲欧美色欧另类欧 | 欧美a一| 国产亚洲综合成人91精品 | 黄色在线视频网址 | 欧美日韩高清不卡免费观看 | 亚洲伊人久久大香线蕉综合图片 | 欧美成人中文字幕在线视频 | 亚洲色图第1页 | 亚洲韩国日本欧美一区二区三区 | 黄色精品视频 | xx日韩| 日韩一级精品久久久久 | 精品久久久久久久久中文字幕 | 亚洲欧美日韩中文字幕在线 | 一边摸一边叫床一边爽 | 欧美极品第1页专区 | 日韩免费一区二区三区在线 | 国产亚洲视频在线 | 精品国产91久久久久久久 | aa级毛片| 国产日韩欧美第一页 | 欧美视频日韩专区午夜 | 国产在线观看不卡 | 国产精品电影一区二区 | 国产成人精品999在线观看 | 欧美日韩视频在线播放 | 欧美黄站 | 久久精品a国产一级 | 欧美一区二区在线免费观看 | 久热中文字幕在线精品首页 | 久久久国产高清 | 国产精品久久久久久一区二区 | 免费一级a毛片在线播 | 日韩欧美偷拍 | 97精品国产97久久久久久 | 一级免费毛片 | 怡红院一区二区三区 | 香蕉乱码成人久久天堂爱免费 | 国产成人高清亚洲一区久久 | 国产网站在线免费观看 | 久久香蕉国产线看观看乱码 |