Основные направление передачи данных - от родительского компонента к дочернему. В этой ситуации все просто- передаем параметры через props:
import React, {Component} from "react";
import {View, Text} from "react-native"
class Parent extends React.Component{
state = {
text: 'test'
};
render() {
return(
<Child text={this.state.text} />
)
}
}
class Child extends React.Component{
constructor(props) {
super(props)
}
render() {
return(
<View>
<Text>
{this.props.text}
</Text>
</View>
)
}
}
В родительском компоненте определяем state и передаем его свойство в дочерний компонент. Теперь при обновлении родителя, так же будет обновляться текст и у дочернего компонента.
В данном случае нужно создать вспомогательную функцию у родителя
import React, {Component} from "react";
import {View, Button} from "react-native"
class Parent extends React.Component{
constructor(props) {
super(props);
this.update = this.update.bind(this);
}
update(params) {
//Некий полезный код, например this.setState
}
render() {
return(
<Child update={this.update} />
)
}
}
class Child extends React.Component{
constructor(props) {
super(props)
}
render() {
return(
<View>
<Button title={'Click me'} onPress={this.props.update('param')}/>
</View>
)
}
}
Созданную у родителя функцию нужно привязать к к нему, для этого вызывается функция bind в конструкторе. Далее функцию передаем в props дочернего элемента, где вызываем ее по некоему событию.
Для общения между соседями так же понадобиться дополнительная функция
import React, {Component} from "react";
function updateState(state) {
this.setState(state);
}
class Neighbour1 extends React.Component{
constructor(props) {
super(props);
updateState = updateState.bind(this);
}
}
class Neighbour2 extends React.Component{
componentDidMount() {
updateState({key:'value'})
}
}
Функция обьявляется вне классов, но привязывается к одному из компонентов функцией bind в конструкторе. Затем в соседнем компоненте можно вызвать данную функцию в контекте первого компонента.