Skip to content

Instantly share code, notes, and snippets.

@slorber
Created May 11, 2018 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slorber/9ab916434fee2bd71c458fd3514e1ac6 to your computer and use it in GitHub Desktop.
Save slorber/9ab916434fee2bd71c458fd3514e1ac6 to your computer and use it in GitHub Desktop.
const injectFiltersAPI = Comp => {
class FiltersAPIInjector extends React.Component {
constructor() {
super();
this.filtersAPI = {
getFilters: this.getFilters,
setFilters: this.setFilters,
deleteFilters: this.deleteFilters,
updateFilters: this.updateFilters,
};
}
getFilters = () => parse(this.props.location.search);
setFilters = (filters) => {
const { location, history } = this.props;
history.push({ ...location, search: stringify(filters) });
};
deleteFilters = () => this.setFilters({});
updateFilters = (filters) => this.setFilters({
...this.getFilters(),
...filters,
});
render() {
return <Comp
{...this.props}
filtersAPI={this.filtersAPI}
/>;
}
}
return withRouter(FiltersAPIInjector);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment