Si potrebbe passare un callback poi passare attraverso oggetti di scena, probabilmente utilizzando il gancio componentWillReceiveProps come la configurazione diventa più avanzata.
Se si sta facendo questo molto sì, si dovrebbe usare Flux o Redux o simili.
import React, {
Component,
TouchableOpacity,
Text,
} from 'react-native';
class Main extends Component {
constructor() {
super();
this.state = {
data: 'default'
}
}
onChange = (data) => {
console.log(`Data changes to ${data} !`);
this.setState({ data });
}
render() {
const { data } = this.state;
return <Other data={data} onChange={this.onChange}></Other>;
}
}
class Other extends Component {
render() {
const { data } = this.props;
console.log(`Other Component Data is ${data}`);
return (
<TouchableOpacity onPress={() => {this.props.onChange('Success!')} }>
<Text style={{fontSize: 30}}>{data}</Text>
</TouchableOpacity>
);
}
}
Inoltre, se si utilizzano componenti statici quando sai stato non è necessaria nel componente secondaria, si può costruire molto di più componenti funzionali riutilizzabili:
class Main extends Component {
constructor() {
super();
this.state = {
data: 'default'
}
}
onChange = (data) => {
console.log(`Data changes to ${data} !`);
this.setState({ data });
}
render() {
const { data } = this.state;
return <Other data={data} onChange={this.onChange}></Other>;
}
}
const Other = ({ data, onChange }) => {
return (
<TouchableOpacity onPress={() => {onChange('Success!')} }>
<Text style={{fontSize: 30}}>{data}</Text>
</TouchableOpacity>
);
}
fonte
2015-12-06 20:43:31
http://stackoverflow.com/a/33721002/4481883 – Phyo
http://andrewhfarmer.com/component-communication/ –
Sì, ho visto quel post ma non è così chiaro da quello. Il secondo riguarda React e non React Native. – Hasen