2017-07-24 2 views
1

Ich entwickle eine universelle Anwendung reagieren mit redux. In meinen Aktions-Erstellern versende ich meine Daten zum speichern.Pass Dispatch-Funktion auf das Kind Komponente

in ComponentDidMount Funktion Dispatch-Funktion ist OK, aber wenn ich es auf Komponente zu übergeben will in Render-Funktion Es gibt mir Fehler, dass nicht Eigentum lesen ‚Dispatch‘ undefinierter Wie ich meine Versandfunktionen Komponente passieren kann?

Container Code:

class DealContainer extends React.Component { 
static readyOnActions(dispatch, params) { 
       return Promise.all([ 
        dispatch(DealsActions.fetchDealData(params.id)), 
        dispatch(SubmitActions.fetchSubmitInitialData()), 

       ]); 
      } 

      componentDidMount() { 
       DealContainer.readyOnActions(this.props.dispatch,this.props.params); 

      } 
    render() { 
    return(
    <MyComponent 
    changeStoreFunction = {this.props.dispatch(SubmitActions.changeUserId)} 
    />) 

    } 
    const mapStateToProps = (state, ownProps) => { 
     return { 
      dealData: state.dealData, 
      routing: ownProps.location.query, 
      submitInitialData: state.submitInitialData, 
      id: ownProps.params.id, 
      mapInfo: state.mapInfo, 
      areaList: state.areaList, 
     } 
    }; 

    DealContainer.propTypes = { 
     params: PropTypes.shape({ 
      id: PropTypes.string.isRequired, 
     }).isRequired, 
     dispatch: PropTypes.func.isRequired, 
    }; 
     } 
    export default connect(mapStateToProps)(DealContainer); 
+0

whers ist Ihr 'mapDispatchToProps'? –

+0

@AkashShinde Ich benutze propTypes – Sepehr

+2

obwohl Sie 'mapDispatchToProps' Funktion definieren müssen Versand zuzugreifen Rootkontext –

Antwort

0

der Tat, müssen Sie mapDispatchToProps verwenden, um Zugriff auf die Dispatch-Funktion zu erhalten.

Dort können Sie Ihre Funktion definieren, die innerhalb Ihrer Komponente Render-Methode aufgerufen wird:

const mapDispatchToProps = (dispatch) => { 
    return { 
    yourFunctionToCallFromComponent:() => { 
     dispatch(yourAction()) 
    } 
    } 
} 

export default connect(mapStateToProps, mapDispatchToProps)(DealContainer); 
+0

@SepEhr reagieren, wenn diese Antwort Ihnen geholfen, fügen Sie es als eine Antwort ankreuzen, die Ihr Problem/Frage gelöst :) Danke –

Verwandte Themen