Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何去掉查询字符串_Javascript_Url Routing_Browser History - Fatal编程技术网

Javascript 如何去掉查询字符串

Javascript 如何去掉查询字符串,javascript,url-routing,browser-history,Javascript,Url Routing,Browser History,解决 我有一个愚蠢的问题。我无法摆脱查询字符串!!一旦我把它写入历史,我就找不到如何删除它 我有一个带有导航的React应用程序(通用路由器)。我不认为这与我使用的库有关,而是与URL和历史API的错误使用有关 我有一个用户列表,每个用户都有一个编号。我有一张输入表格来输入号码。我以/users?nb=1的形式将其作为查询字符串附加。此url提交给在路径数组中搜索的解析程序。 与/users路径对应的操作代码有一个函数,用于读取是否存在查询字符串。如果是,提取号码并按下新路径/users/1。

解决

我有一个愚蠢的问题。我无法摆脱查询字符串!!一旦我把它写入历史,我就找不到如何删除它

我有一个带有导航的React应用程序(通用路由器)。我不认为这与我使用的库有关,而是与URL和历史API的错误使用有关

我有一个用户列表,每个用户都有一个编号。我有一张输入表格来输入号码。我以
/users?nb=1
的形式将其作为查询字符串附加。此url提交给在路径数组中搜索的解析程序。 与
/users
路径对应的操作代码有一个函数,用于读取是否存在查询字符串。如果是,提取号码并按下新路径
/users/1
。 这几乎起作用了:我实际上推了
/users/1?nb=1

注意:我当然可以不使用查询字符串直接推送
/users/1
,但这是一个练习

诀窍是什么??[编辑]:覆盖键
搜索:“

编辑:

1-发出函数,创建查询字符串

函数handleSubmit(e){
e、 预防默认值();
让query=Object.fromEntries(newformdata(e.currentTarget));
const{pathname,search}=window.location
const qstring=新的URLSearchParams(搜索);
对于(查询中的常数k){qstring.append(k,查询[k])};
push({pathname,search:“?”+qstring});
}
1b-与“正常”链路相比

const handleClick=(e)=>{
e、 预防默认值();
push({pathname:e.target.pathname});
};
2-条件路径(用于查询字符串)

const searchString=新的URLSearchParams(window.location.search);
const id=searchString.get(“nb”);
if(id){return{redirect:`/users/${id}}}
3-解决方案

const page=wait router.resolve({pathname:location.pathname});
如果(第页重定向){
返回history.push({pathname:page.redirect,搜索:“”});
}                                                  ^^^!
返回render({page},root);

pb是通过添加搜索:“来解决的,它删除了后面的查询字符串。

因此@Ouroborus显示,您只需在解析程序返回的url中添加
搜索:“
,即可覆盖前面的查询字符串:

history.push({pathname:page.redirect,搜索:“”)

正如@Ouroborus所示,您只需在解析程序返回的url中添加
搜索:'
,即可覆盖前面的查询字符串:

history.push({pathname:page.redirect,搜索:“”)

Edited@OuroborusI注意到您在代码片段“1”中使用了
{pathname:“?”+qstring}
。使用
history.push()
时,您不仅限于
pathname
选项。您还有一个可用的
search
选项。我认为,在处理返回的重定向时,您需要根据需要添加选项
搜索:“”
,以便它知道应该清除查询。事实上,成功了!谢谢我用answer@Ouroborus你们中有人介意把答案作为答案贴出来吗?就为了这样的精神!谢谢!已编辑@OuroborusI注意到您在代码片段“1”中使用了
{pathname:“?”+qstring}
。使用
history.push()
时,您不仅限于
pathname
选项。您还有一个可用的
search
选项。我认为,在处理返回的重定向时,您需要根据需要添加选项
搜索:“”
,以便它知道应该清除查询。事实上,成功了!谢谢我用answer@Ouroborus你们中有人介意把答案作为答案贴出来吗?就为了这样的精神!谢谢!