javascript - 具有多个搜索参数的 React-Router 位置
问题描述
通常我将这些函数用于第一个搜索参数。
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
解决方案
如果你有多个参数,你必须先把它们放在一个对象中:
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 - 如何将滚动位置动画到可滚动div中的目标元素?
- java - Eclipse 配置 - 是否可以动态显示方法参数名称?
- android - 在内部滚动视图之前滚动外部滚动视图 - Android
- android - 动画 SplashScreen 和 Masking LinearLayout
- reactjs - 如何在不覆盖的情况下以比 setState 快数倍的速度更新状态数组?
- r - KableExtra + R 调整标题(字体、大小、颜色等...)
- angular - 在不捆绑的情况下检查 Angular 应用程序的模板错误
- excel - 如何创建一个 excel 文件并通过每次新运行添加一行新的输出数据来更新它?
- python - “AttributeError: module 'wx' has no attribute 'adv'” 尽管 Phoenix
- css - CSS(动作选择器):目标不起作用