react router在搜索模块中的应用
问题相关:
React-Router
,Link
构建工具:Webpack
由于项目赶紧,可能过于快速查看api,没有发现Link组件中query
为多个键值的例子,只是简单介绍了一下。可能直观上我描述的问题很烂,所以直接给出需求,希望各位看官给个思路和指出我是否有用错。
⚠注意:我用的是
React-Router v1.0.2
版本
不废话了,开始
需求:
例如,现在我的组件结构
为以下简图图示:
search
分类
- 前端 - 后台
时间
- 一个月内 - 半年内
当前我的URL:...(忽略)/search
组件的JSX
<ul>
<li>
<Link to={`search`} query={{categories: ‘前端’}}>前端</Link>
<Link to={`search`} query={{categories: ‘后台’}}>后台</Link>
</li>
<li>
<Link to={`search`} query={{time: ‘一个月内’}}>一个月内</Link>
<Link to={`search`} query={{time: ‘半年内’}}>半年内</Link>
</li>
</ul>
结构可能很烂,但是为了减少代码量所以将就下。
路由:
module.exports = {
path: 'search',
getComponent: function(location, cb) {
require.ensure([], function(require) {
// data fetching here...
cb(null, require('../components/Search.js'));
});
}
};
现在回到简图,为了方便,我重新粘贴一次
search
分类
- 前端 - 后台
时间
- 一个月内 - 半年内
我希望点击了
前端
,我的URL
变成.../search?category=前端
同一,我点击了
一个月内
,我的URL
变成.../search?time=一个月内
先点击
前端
,URL
变化为.../search?category=前端
,再点击一个月内
,URL变化为.../search?category=前端&time=一个月内
在3的基础上,如果我再点击
后台
,那么URL变成.../search?category=后台&time=一个月内
(希望你注意到URL的变化...)。
方案
期待你的回复!不胜感激
解决方案
特别多谢charleyw的建议和帮助。
query={Object.assign({}, this.props.location.query, {time: '半年内'})}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
全都改成这样应该就行了把,把当前Link的query条件和页面现有的query merge一下。这里用的Object.assign merge的。