1.3.0 • Published 3 years ago
react-query-state-sync v1.3.0
REACT QUERY STATE SYNC
This package provide hook for manage your variables needed store in state and synced with query params.
This package has dependencie to react-router-dom.
Instalation
npm i react-query-state-syncHow to use
Create some page, wrap it with Router.
import { useQueryStateSync } from "react-query-state-sync";
const TestPage = () => {
const { queryParams, querySetters } = useQueryStateSync({
page: "1",
limit: "10",
});
return (
<div>
<div>Page: {queryParams.page}</div>
<div>
<button
onClick={() =>
querySetters.set_page(String(Number(queryParams.page) + 1))
}
>
Next page
</button>
<button
onClick={() =>
querySetters.set_page(String(Number(queryParams.page) - 1))
}
>
Prew page
</button>
</div>
<div>
Limit:{" "}
<select onChange={(e) => querySetters.set_limit(e.target.value)}>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
</div>
</div>
);
};import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import TestPage from "./TestPage";
function App() {
return (
<Router>
<Switch>
<Route path="/">
<TestPage />
</Route>
</Switch>
</Router>
);
}How it work
All you need is useQueryStateSync. This hook API designed with useState in mind.
const { queryParams, querySetters } = useQueryStateSync({
page: "1",
limit: "10",
});Object you pass to useQueryStateSync as param, is object where you define inital state.
So, queryParams is object returned same object as you pass to useQueryStateSync, but with actual values.
querySetters is object with setters. All setters creates by add set_ to parametr name. If you define page then you get set_page function for update page value.