Что вы можете сделать:
1) Определите функцию обратного вызова, в вашем случае:
(f) => {
let person = find(data.persons, function (o) { return o.id === f; });
this.setState({
data: {
parameter1: person.fullName,
parameter2: person.id
}
});
this.setState({ data: this.state.data });
}
как отдельную функцию внутри компонента mapSeat. (Давайте просто вызовем эту функцию'foo' для простоты)
2) Свяжите эту функцию с конструктором компонента места карты:
this.foo = this.foo.bind(this);
3) Передайте ссылку на функцию, которую вы определили в шаге 2, как подпорки при вызовекомпонент:
<SomeComponent
persons={data.persons}
onPersonSelect={this.foo}/>
4) Наконец, в вашем новом компоненте (то есть SomeComponent).Просто вызывайте эту функцию следующим образом всякий раз, когда требуется функция обратного вызова:
this.props.foo();
Из-за шага 2 функция будет связана с контекстом родительского компонента.И, таким образом, сможет изменять состояние родительского компонента, даже если он вызывается из дочернего компонента.
Примечание. Это вызовет метод render () родительского компонента и, соответственно, расширения дочернего компонента.компонент.
Надеюсь, это поможет!:)