For reasons that I still don't understand, React does not recommend calling child methods on the parent. However, they soften and give us an "escape hatch" that allows just that. You were right in thinking that βRefs were part of this escape hatch. If, like me, you read dozens of articles looking for this information, you will be well prepared to understand the description of the exit hatch
In your case, you can try something similar in your KpisHeader class.
Change this line
<TodayKpi ref="todayKpi" {...this.state}/>
to use the ref callback function:
<TodayKpi ref={(todayKpiComponent) => this.todayKpiComponent = todayKpiComponent} {...this.state}/>
or, pre-ES6, this is:
<TodayKpi ref= { function (todayKpiComponent) { this.todayKpiComponent = todayKpiComponent } } {...this.state} />
Then you can access your todayKpi component methods from your KpisHeader class as follows:
this.todayKpiComponent.someMethod();
Oddly enough, for me, inside the ref callback function, it was a window, not a parent component. So I had to add
var self = this;
above the render method and use 'self inside the ref callback function.
In my case, I had an unknown number of dynamically generated child components, so I put each into an array. I cleared the array in the WillUpdate component. It seems that everything works, but I had a difficult feeling, especially considering that Reacts is disgusting with calls to child methods.