2017-02-28 47 views
0

我有一个容器组件,它的参数为?"type=specificType"。当该参数通过链接改变时,我想重新渲染数据的不同子集。React路由器 - 当查询参数发生变化时,render()不会触发

你会如何处理这个问题?
例如: 页面上的链接 - ALL | FISH | BIRDS | MAMMALS

该路线是http://baseURL/animals,并将呈现所有动物。

当这个链接被选中<Link to="/animals?type=birds" />我想重新渲染的页面只有BIRDS的动物的子集,但没有触发这种变化。

任何有关如何做到这一点的建议?

非常感谢!

回答

0

嗯,我不能相信我以前没有想过这个,但答案很简单。我将一个处理程序传递给具有过滤器链接的组件。当任何给定的链接被选中时,“更新”方法简单地调整数据并从那里调用render()方法。

感谢您的输入。

0

取而代之的是Link的,你可以把一个Button并在onClick处理程序可以调用this.forceUpdate()this.setState(this.state)触发重新绘制,然后使用手动react-router

0

你总是可以听路由变化通过使用重定向:

browserHistory.listen()

基本上我把它放在一个变量' routeListener'并在'componentWillMount()'上调用它。并运行'handleRouteChange()'我想调用的任何方法。

并确保通过调用'componentWillUnMount()'中的routeListener()来停止侦听器。

​​

我希望这能解决您的问题。祝你好运

相关问题