Вы не можете изменять реквизиты из дочернего компонента, передавать обратный вызов от родителя через реквизиты дочернему компоненту, использовать состояние в дочернем компоненте или использовать ваше хранилище с избыточностью.
Что ж, это легко исправитьбыть:
this.props.changeData(data)
с родительским рендером:
render() {
return (<div> <ChildB data={this.state.data} changeData={(data)=>{this.setState({data: data})}/></div>)
}
но это зависит от ситуации, и вы не хотите, чтобы таким образом устанавливалось состояние родителей для ребенка.