 <blockquote> <p>What I would like is for the Parent component to intercept the props.parentClassName set in GrandParent and change it, or create it if it doesn't exist.</p> </blockquote> <p>A component cannot intercept props from its parent because it has no access to its parent, only to its children!</p> <p>I'm still don't clearly understand what you want to achieve... Does the following code do what you want?</p> <pre><code>import _ from 'underscore'; import React from 'react'; class Grandparent extends React.Component { render() { return ( &lt;div {... this.props}&gt; &lt;Parent&gt; &lt;span&gt;hello&lt;/span&gt; &lt;span&gt;welcome&lt;/span&gt; &lt;span className="red"&gt;red&lt;/span&gt; &lt;/Parent&gt; &lt;/div&gt; ); } } // Parent component will add ``className="border"`` to each its // child without ``className`` property. class Parent extends React.Component { render() { return ( &lt;div {... this.props}&gt; {_.map(this.props.children, (v, k) =&gt; React.cloneElement(v, {className: v.props.className || 'border', key: k}))} &lt;/div&gt; ); } } </code></pre>