// container component class HandlerA { handleSubmit(event) { // do stuff } render() { const { children // react-router passes your child in here } = this.props; return ( <form onSubmit={this.handleSubmit}> {React.cloneElement(children, {onSubmit: this.handleSubmit})} </form> ) } } // a child to be rendered into ComponentA via routes class ComponentB { render() { return ( <fieldset> <input type="text" /> <button>Submit</button> // The button will still submit the form </fieldset> ) } } // a child to be rendered into ComponentA via routes class ComponentC { render() { const {onSubmit} = this.props; // we can access the props passed by our parent return ( <fieldset> <input type="text" /> <div onClick={onSubmit}> /* Some other fancy thing we want to use to submit */ Stuff </div> </fieldset> ) } }