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

标签 javascript reactjs react-router-dom

通常我使用这些函数作为第一个搜索参数。

history.push({
    pathname: props.location.pathname,
    search: "nice=yes"
})

在这些 history.push 链接之后看起来像这样 -> x.com/标题?nice=是

但我无法添加更多搜索查询。当我尝试添加新 key 时,仅旧 key 发生变化。 例如,我的链接是 x.com/title?nice=yes 并且我在页面更改时添加第二个搜索,查询如下所示;

history.push({
    pathname: props.location.pathname,
    search: "page=10"
})

但它改变了第一个参数。

我想添加多个参数,如下所示:x.com/title?page=10&nice=yes

最佳答案

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

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&...'
})

关于javascript - 具有多个搜索参数的 React-Router 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58974784/

相关文章:

javascript - 多个页面的 React-Redux 状态形状

javascript - 在中心对齐 wordpress 幻灯片

javascript - react : Child Component Does Not Rerender When Submitting Form

reactjs - React Router v5.1.2 公共(public)和 protected 经过身份验证和基于角色的路由

javascript - 使用 nodejs 、 express 和 mongoose 的 bluebird Promisies crud 示例

javascript - jQuery 函数在单击之前启动,为什么?

javascript - 复制对象数组以用作状态 - React.js

javascript - Webpack 没有在生产环境中最小化我的 JavaScript 文件

javascript - React : Good Practices For CDNs, Node_Modules 和两者

ReactJS : In react-rooter-dom, 是否已弃用 useHistory?