react-router v4 做查询的功能的时候,地址为abc.com/search/beijin,搜索框输入k1,回车,然后页面跳转到搜索结果页abc.com/search/beijin/k1,这个页面有下拉加载更多功能,下拉,会加载page1,page2。。。page的页码存在state中。
然后搜索结果页头部也有搜索框,如果在这里的搜索框输入,k2,回车,页面不会发生跳转,而且k1的结果数据还是在那里。
有什么办法可以重置state吗?或者有什么办法可以无刷新重载这一页呢?
路由:
<Route path="/search/:category/:keywords?" component={AsyncSearch} />
访问地址
http://0.0.0.0:8888/#/search/all/000
然后再访问
http://0.0.0.0:8888/#/search/all/111
自问自答吧,国外也很多人问这个问题,这算是react-router的缺陷吧,很多人用了比较恶心的类似hack的手法解决该问题,各种乱七八糟甚至误导性的答案。
我选择了一个很简洁的hack手法:
跳转部分
路由部分