React.js. Стоит ли делать главный компонент «глобальным»?
props можно прокидывать пользуясь jsx синтаксисом (раньше это был метод transferPropsTo)
сейчас так  см.  https://gist.github.com/sebmarkbage/a6e220b7097eb3...
тогда не придется бесконечно дублировать имя колбека.
Вообще рекомендую писать используя flux facebook.github.io/flux методологию, тогда изменения state будут идти через отдельные компоненты и такого наследования пропсов удается избежать.
Существует еще одна возможность прокидывания callback'ов это var App = React.createClass({
  ...
  render: function() {
    return <ItemsList context={{onToggleOption: this.onToggleOption}} />
  }
});

var ActiveElement = React.createClass({
  childContextTypes: {
    onToggleOption: React.PropTypes.func.isRequired
  },

  render: function(){
    return <button onClick={this.context.onToggleOption}>Click me</button>
  }
});
Пример конечно утрированный получился, но основная суть такая: 
 - Корневой элемент конмпонента объявляет контекст, которым пользуются все его потомки в обязательном порядке
В своей разработке у меня применяется архитекткра Reflux, поэтому в контексте прокидываются события, получается достаточно удобно, пример:var ListActions = Reflux.createActions('toggleOption');

var App = React.createClass({
  ...
  render: function() {
    return <ItemsList context={{listActions: ListActions}} />
  }
});

var ActiveElement = React.createClass({
  childContextTypes: {
    listActions: React.PropTypes.objectOf(React.PropTypes.func).isRequired
  },

  render: function(){
    return <button onClick={this.context.listActions.toggleOption}>Click me</button>
  }
});