Этот вопрос касается стратегий передачи объектов данных вокруг нескольких компонентов.Как обновить опоры начального маршрута в компоненте NavigatoriOS?
На скриншоте ниже, у меня есть NavigatorIOS с начальным маршрутом в ListComponent. Его в Боковое меню, которое отображает компонент Фильтры. В настоящее время открыто Боковое меню и Фильтры видны.
Моя цель состоит в том, что когда пользователь изменяет вещи в Фильтры, я хочу, чтобы обновить ListComponent.
Я мог бы использовать объект singleton для хранения фильтров, но мне все же нужно найти способ сообщить ListComponent, что они изменились.
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>
);
}
}
решаемые
var onFilterChange = function (filters) {
console.log("filters changed");
this.refs.navigator.replace({
title: 'List',
component: ListComponent,
passProps: {
filters: filters
}
});
};
<NavigatorIOS
ref='navigator'
...
/>
Вы должны опубликовать свой ответ, как ... ответ, потому что это право один. –