
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@borvik/use-querystate
Advanced tools
`useQueryState` is a react hook for storing a state object in the query string. It also responds to changes in the query string and returns the specified portion to you like it was a state.
useQueryState is a react hook for storing a state object in the query string. It also responds to changes in the query string and returns the specified portion to you like it was a state.
There are two parts to this hook - first the hook itself, and then a batch function which provides a way to consolidate multiple query state changes together into one location update.
To work properly (and at all with SSR) you need to wrap your application in a HistoryProvider. This is because this library makes use of the history api in order to change the query string, but different React libraries handle updates to the url differently (ex. react-router vs. next.js).
So in an effort to work with more frameworks, the HistoryProvider is meant to pass down the functions necessary to work with the history api.
Since this library originally used react-router the functions resemble those originally provided by that library.
You can see an example of constructing the provider and it's use in the following files (from the main monorepo): test-app/app/components/historyProvider.tsx and test-app/app/root.tsx.
const [state, setState] = useQueryState(initialState[, options])
initialState
An object representing the initial (default) state derived from the query string when the query string is empty.
options
Options to control how to parse and save the state
prefix?: Astringkey that should prefix this set of values when serializing to the query string. Ex. if two components want to use the same keys (likepage) you can give them each a different prefix.
internalState?: A boolean indicating to not serialize to the query string. Useful in the same scenario as the prefix. Essentially works like asetStatewrapper.
types?: An object containing the type definitions for the query string. If not specified they will be derived from theinitialState. See the @borvik/querystring for the type definitions.
Returns a tuple containing the state, and a setter function. Unlike the setter function returned from setState, this setter function allows for partial state updates.
batchedQSUpdatebatchedQSUpdate(cb: Function)
cb
A synchronous callback function, inside which you make your various query state changes. After this callback is done, it will update the query string.
A wrapper function for setting multiple query states all at the same time.
import { useQueryState } from '@borvik/use-querystate';
const [pagination, setPagination] = useQueryState({page: 1, pageSize: 10});
// pagination = {page: 1, pageSize: 10} assuming no query string
// don't call together like this, these are just examples of _how_ to call
setPagination({ page: 2 }); // ?page=2
setPagination({ page: 1, pageSize: 15 }); // ?pageSize=15
import { batchedQSUpdate, useQueryState } from '@borvik/use-querystate';
const [pagination, setPagination] = useQueryState({page: 1, pageSize: 10});
// pagination = {page: 1, pageSize: 10} assuming no query string
const [filter, setFilter] = useQueryState({filter: null}, {
types: {
filter: 'any',
}
});
// filter = { filter: null } assuming no query string
batchedQSUpdate(() => {
setPagination({ page: 2 });
setFilter({ filter: 'use-querystate' });
}); // ?page=2&filter=use-querystate
import { useQueryState } from '@borvik/use-querystate';
const [pagination, setPagination] = useQueryState({page: 1, pageSize: 10}, { prefix: 'my-cmp.' });
// pagination = {page: 1, pageSize: 10} assuming no query string
setPagination({ page: 2 }); // ?my-cmp.page=2
FAQs
`useQueryState` is a react hook for storing a state object in the query string. It also responds to changes in the query string and returns the specified portion to you like it was a state.
The npm package @borvik/use-querystate receives a total of 203 weekly downloads. As such, @borvik/use-querystate popularity was classified as not popular.
We found that @borvik/use-querystate demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.