ContractLayoutContainer.js
1 import React, {Component} from 'react'; 2 import {connect} from 'react-redux'; 3 import PropTypes from 'prop-types'; 4 import {withRouter} from 'react-router-dom'; 5 6 import {contract as contractAction} from '../actions'; 7 import ContractLayout from '../components/ContractLayout'; 8 import {getContract} from "../reducers/selectors"; 9 10 class ContractLayoutContainer extends Component { 11 componentDidMount() { 12 this.props.fetchContract(this.props.match.params.contractName); 13 } 14 15 render() { 16 if (this.props.contract){ 17 return <ContractLayout contract={this.props.contract}/>; 18 } else { 19 return <React.Fragment />; 20 } 21 } 22 } 23 24 function mapStateToProps(state, props) { 25 return { 26 contract: getContract(state, props.match.params.contractName), 27 error: state.errorMessage, 28 loading: state.loading 29 }; 30 } 31 32 ContractLayoutContainer.propTypes = { 33 match: PropTypes.object, 34 contract: PropTypes.object, 35 fetchContract: PropTypes.func, 36 error: PropTypes.string 37 }; 38 39 export default withRouter(connect( 40 mapStateToProps, 41 { 42 fetchContract: contractAction.request 43 } 44 )(ContractLayoutContainer));