Из вашего вопроса видно, что вы хотите, чтобы дочерний компонент (FooComponent) знал, что кнопка была нажата, чтобы он мог обрабатывать (сортировать) полученные данные.
Существует много подходов к этому. Например, вы можете передать логическое свойство дочернему компоненту, который является флагом для его выполнения сортировки. Таким образом, родительский компонент отслеживает, когда была нажата кнопка, и дочерний компонент просто наблюдает это (возможно, в componentDidUpdate).
Это немного изменится, если вы используете функциональные компоненты, а не компоненты на основе классов, но это дает вам представление.
state = {
requestSort: false
}
requestSort = () => {
this.setState({
requestSort: true
}
}
render() {
return (
<>
<button id="myBtn" onClick={this.requestSort}>Click Me</button>
<div className="myClass">
<FooComponent requestSort={this.state.requestSort} fooData={data} />
</div>
</>
)
}
В качестве альтернативы, поскольку данные также передаются дочернему компоненту, вы можете parent отсортировать их при нажатии. Это зависит от того, делаете ли вы что-то еще с данными (то есть является ли FooComponent тем, у которого должна быть отсортированная копия данных или нет).