我试图弄清楚应该如何使用React Router处理查询。我目前的操作方式,this.props.location.search
注意:我正在使用withRouter
我正在使用qs库解析查询输入
const queryString = (q) => qs.stringify(q, { format: 'RFC1738' })
然后,如果有查询(过滤器或页面更改),我将重定向到所需的路由。
if (toResults) {
return (
<Redirect
push
to={{pathname: `/search/${route}`}}
/>
)
}
控制台日志在componentDidUpdate内部:{pathname: "/search/?query=some+query&page=0", search: "", hash: "", key: "5tqm1t"}
为什么查询不显示在搜索中?我在这里做错了吗?
不是将重定向组件的参数传递给对象,而是将其作为字符串传递。由于某种原因,当我将其作为对象传递时,它与我设置的另一条路线发生了冲突。
if (toResults) {
return <Redirect push to={`/search/${route}`} />
}
因此,我将生成URL的方式修改如下:
const queryString = (q) => `q?${qs.stringify(q, { format: 'RFC1738' })}`