Get/set URL parameters (state) in the hash string instead of the query string.
npm install @metapages/hash-queryGet/set URL parameters (state) in the hash string instead of the query string.
Keep state in sync in the URL
- Includes react hooks for getting/setting typed values.
- Includes low level tools for getting/setting arbitrary typed values.
- Includes base64 encoding/decoding of JSON objects, booleans, numbers, etc.
Install the package:
``sh`
npm i @metapages/hash-query
Use the hook in your component:
`typescript
import { useHashParamJson } from "@metapages/hash-query/react-hooks";
...
const [jsonBlob, setJsonBlob] = useHashParamJson
`
Use the low level tools for getting/setting arbitrary typed values:
`typescript
import {
getHashParamValueJsonFromWindow,
setHashParamValueJsonInWindow,
} from "@metapages/hash-query";
const jsonBlob = getHashParamValueJsonFromWindow
setHashParamValueJsonInWindow("key", jsonBlob);
`
The hash part of the URL (everything after #) is split into the part and the key=val query parts of the hash parameter:
``
https://
`typescript
import {
useHashParam,
useHashParamBase64,
useHashParamBoolean,
useHashParamFloat,
useHashParamInt,
useHashParamJson,
} from "@metapages/hash-query/react-hooks";
`
Usage is the same as the JSON example above (get/set value)
`typescript
import { setHashParamsInUrl } from "@metapages/hash-query";
const url = "https://example.com/page#section";
const params = {
theme: "dark",
language: "en",
view: "grid",
filter: undefined, // This will be ignored/removed
};
const newUrl = setHashParamsInUrl(url, params);
// Result: "https://example.com/page#section?theme=dark&language=en&view=grid"
`
Low level tools and utils for getting/setting arbitrary typed values in the URL hash string or manipulating the hash string without having to actually set the URL:
`sh``Base Functions
blobToBase64String
blobFromBase64String
stringToBase64String
stringFromBase64String
getUrlHashParams
getUrlHashParamsFromHashString
getHashParamValue
getHashParamFromWindow
getHashParamsFromWindow
setHashParamInWindow
setHashParamValueInHashString
setHashParamValueInUrl
deleteHashParamFromWindow
deleteHashParamFromUrlJSON Functions
setHashParamValueJsonInUrl
getHashParamValueJsonFromUrl
setHashParamValueJsonInWindow
getHashParamValueJsonFromWindow
setHashParamValueJsonInHashStringFloat Functions
setHashParamValueFloatInUrl
getHashParamValueFloatFromUrl
setHashParamValueFloatInWindow
getHashParamValueFloatFromWindowInteger Functions
setHashParamValueIntInUrl
getHashParamValueIntFromUrl
setHashParamValueIntInWindow
getHashParamValueIntFromWindowBoolean Functions
setHashParamValueBooleanInUrl
getHashParamValueBooleanFromUrl
setHashParamValueBooleanInWindow
getHashParamValueBooleanFromWindowBase64 Functions
setHashParamValueBase64EncodedInUrl
getHashParamValueBase64DecodedFromUrl
setHashParamValueBase64EncodedInWindow
getHashParamValueBase64DecodedFromWindow