[英]query-string in react router v6
我在我的 URL 中顯示了兩個查詢字符串,就像這樣**localhost3000/?filter=all&search=something**
但問題是當沒有任何內容可供搜索時,我的 URL 仍然顯示**localhost3000/?filter=all&search=**
而如果它使用,我想顯示搜索,當沒有搜索時它顯示**localhost3000/?filter=all**
這是我的代碼:
replaceUrl = () => {
const x = {
filter: this.state.filter,
search: this.state.searchterm,
};
const y = queryString.stringify(x);
this.props.navigate(`?${y}`);
};
過濾器更改或搜索時調用replaceUrl
如果this.state.searchterm
存在,只需設置search
字段
replaceUrl = () => {
const x = {
filter: this.state.filter,
};
if (this.state.searchterm) x.search = this.state.searchterm;
const y = queryString.stringify(x);
this.props.navigate(`?${y}`);
};
由於您使用的是 class 組件,我假設您將其包裝在 function 組件中以將navigate
function 注入道具中沒有問題。 react-router-dom
v6 有一個useSearchParams
掛鈎,專門用於處理 URL 查詢字符串。
筆記:
const [searchParams, setSearchParams] = useSearchParams();
將searchParams
和setSearchParams
傳遞給您的 class 組件並通過道具訪問。
replaceUrl = () => {
const { filter, searchterm } = this.state;
const { searchParams, setSearchParams } = this.props;
if (filter) {
searchParams.set("filter", filter);
}
if (searchterm) {
searchParams.set("search", searchterm);
}
setSearchParams(searchParams);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.