为了账号安全,请及时绑定邮箱和手机立即绑定

具有多个搜索参数的 React-Router 位置

具有多个搜索参数的 React-Router 位置

慕村9548890 2022-01-07 10:43:31
通常我将这些函数用于第一个搜索参数。history.push({    pathname: props.location.pathname,    search: "nice=yes"})在这些history.push链接之后看起来像这样-> x.com/title?nice=yes但我无法添加更多搜索查询。当我尝试添加新密钥时,只会更改旧密钥。例如我的链接是x.com/title?nice=yes,我在页面更改时添加第二个搜索,查询看起来像这样;history.push({    pathname: props.location.pathname,    search: "page=10"})但它改变了第一个参数。我想像这样添加多个参数: x.com/title?page=10&nice=yes
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

如果你有多个参数,你必须先把它们放在一个对象中:


const params = {

    page: 10,

    nice: "yes",

    size: 20,

    ...

}

然后用这个函数序列化它们:


const serialize = obj => Object.keys(obj)

                             .map(key => `${key}=${encodeURIComponent(obj[key])}`)

                             .join('&')

像这样 :


history.push({

    pathname: history.location.pathname,

    search: serialize(params) // => search: 'page=10&nice=yes&size=20&...'

})


查看完整回答
反对 回复 2022-01-07
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

创建具有多个参数的字符串


history.push({

    pathname: props.location.pathname,

    search: "page=10&nice=yes"

})


查看完整回答
反对 回复 2022-01-07
?
PIPIONE

TA贡献1829条经验 获得超9个赞

目前,当您第二次推送时,您将以下查询参数添加?page=10到路径名x.com/title


pathname: props.location.pathname, ==> x.com/title

如果要添加新的查询参数,则必须使用 foreach on 检查是否有查询参数this.props.location.query,如果有,则将其添加到路径名


看起来像这样:


let currentPathname;


this.props.location.query.foreach(qparams => {

   currentPathname + qparams

});


history.push({

  pathname: this.currentPathname,

  search: "page=10"

})


查看完整回答
反对 回复 2022-01-07
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信