一覧表示画面などでフィルタ条件を設定したときに、URLのSearch Params(Query String)に状態を保持しておき、画面をリロードしたり別の画面から戻ってきたときに、UIの状態を維持できるようにするみたいな要件って、結構よくありますよね。
今の仕事でもそういったコードが必要になったので、Search Paramsを扱うためのいい感じのhooksがどこかに転がっているだろうと色々探してみたのですが、絶妙にProduction Readyなコードが見つかりませんでした。
なので、自前で書きました。誰かの役に立てば幸いです。
Search ParamsをuseLocation()で取得しようとするとうまく動作しないけどhostory.locationで取得するとうまくいくというのが最大の罠でした。
本体コード
テストコード