簡體   English   中英

如何在 mapDispatchToProps 中訪問由 mapStateToProps 添加的屬性?

[英]How to access properties added by mapStateToProps in mapDispatchToProps?

React Redux 提供了函數connect來綁定 Redux statedispatch給 React 組件(作為屬性)。

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

mapStateToProps(state, [ownProps]): stateProps

mapDispatchToProps(dispatch, [ownProps]): dispatchProps

如何訪問函數mapStateToProps中函數mapDispatchToProps添加的屬性?

例如,我使用函數mapStateToProps將屬性propertyFromState添加到組件中,如何在函數mapDispatchToProps訪問屬性propertyFromState

我嘗試使用參數ownProps來訪問它,但它是undefined

您無法訪問 mapDispatchToProps 中的道具。 相反,您可以在調用函數時將參數傳遞給該函數。 例如,如果你想將 prop 傳遞給動作,你可以通過多種方式做到這一點。

第一的:

function mapDispatchToProps(dispatch) {
  return {
    onNameChanged: (name) => dispatch({ type: 'NAME_CHANGED', payload: name })
  }
}

或者

function mapDispatchToProps(dispatch) {
   return {
     actions: bindActionCreator(action, dispatch);
   }
}

從你的組件調用 this.props.actions(propertyFromState)。 在actions.js中創建動作來接受這樣的參數

function action1(property){
  return { type: 'NAME_CHANGED', payload: property }
}

在 mapDispatchToProps 中無法訪問狀態是荒謬的。 redux 有一個替代方案, Dynadux ,它很簡單,解決了 Redux 的繁瑣。

有用的鏈接: 什么是 mapDispatchToProps?

mapStateToProps() 用於從 Redux/應用程序狀態訪問變量

function mapStateToProps(state) {
return {
    token: reduxState.token
};
}

可以使用 this.props.token 在 React 組件內部訪問它。

並且 mapDispatchToProps 觸發一個動作事件(調度一個可能導致應用程序狀態改變的動作)

const mapDispatchToProps = (dispatch) =>  {
return{
    send:(variable) =>{dispatch(send(variable))}
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM