用的是react router 4.0
代码如下
<Route exact path="/" component={Index} />
<Route path="/detail:skuId" component={Detail} />
我有个商品详情页面,url
是/detail:235
,这个页面中有个“猜你喜欢”模块,:
后面跟的是每个商品的skuId
号码,点击其中某个商品图标后仍然要跳转到/detail
下,只是后面跟的skuId
变了。现在的问题是,点击后只是看到地址栏后面跟的skuId
确实变了,但是页面并没有刷新或者跳转,仍然处于之前的商品页面,请教大家如何解决?
我估摸着是应该在生命周期里做文章,但是还是不知道怎么通过改变url去触发setState事件
有朋友在一个月后也碰到了同样的问题,我就把当时解决的方案写下来吧,之前忘记自问自答了
其实解决的方法是用了
componentWillReceiveProps(nextProps){}
这个函数这里的
nextProps.match.params
就是改变了后的地址对象,而skuId
是这个对象里的一个参数,首先每次这个参数修改,都会触发componentWillReceiveProps
函数,而我在这个函数里重新获取skuId
,再重新触发setState
;这里setState
的第二个参数(函数)中的fetchGoodsInf()
,是ajax
请求后setState
的一系列操作,我在componentDidMount
中也调用了fetchGoodsInf()
,这样就会通过参数的变化重新渲染页面了。这个方法是我自己摸索的,可能会有更好的办法