Questa domanda riguarda le strategie per il passaggio degli oggetti dati attorno a diversi componenti.Come aggiornare gli oggetti di scena del percorso iniziale in un componente NavigatoriOS?
Nello screenshot qui sotto, ho un NavigatorIOS con un percorso iniziale di un ListComponent. Si trova in un menu laterale che visualizza un componente Filtri. Attualmente, il menu laterale è aperto e I filtri sono visibili.
Il mio obiettivo è che quando l'utente cambia le cose in Filtri, voglio aggiornare il ListComponent.
Potrei usare un oggetto singleton per memorizzare i filtri, ma ho ancora bisogno di trovare un modo per dire al ListComponent che hanno cambiato.
var defaultFilters = {
invited: true,
joined: false,
public: true,
private: false,
}
class MainTab extends Component {
constructor(props){
super(props);
this.props.filters = defaultFilters;
}
render() {
var onFilterChange = function (filters) {
console.log("filters changed");
};
var filtersComponent = (<Filters filters={this.props.filters} onFilterChange={onFilterChange.bind(this)} />);
return (
<SideMenu menu = { filtersComponent } touchToClose={true} openMenuOffset={300} animation='spring'>
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'List',
component: ListComponent
}}
/>
</SideMenu>
);
}
}
Risolto
var onFilterChange = function (filters) {
console.log("filters changed");
this.refs.navigator.replace({
title: 'List',
component: ListComponent,
passProps: {
filters: filters
}
});
};
<NavigatorIOS
ref='navigator'
...
/>
Si consiglia di inviare la tua risposta come ... una risposta, perché è quella giusta. –