React-Router和Meteor无法在刷新时使用参数呈现路由

时间:2016-02-29 17:58:33

标签: node.js meteor reactjs react-router

我目前正在开发的应用程序使用meteor with react和react-router来提供路由功能。我有一段代码接受路由参数并使用该ID呈现项目:

<Route path='/ItemView/:itemID' component={ItemView}/>

代码可以正常工作,该链接对路径中的项ID进行编码并正确呈现。但是,在浏览器刷新或在浏览器中手动输入链接时,不会呈现任何内容。它给出了以下错误:

"Exception from Tracker recompute function:" meteor.js:880:10
"TypeError: prevComponentInstance is null"

我该如何处理?我没有正确设置或者我应该避免允许人们以某种​​方式刷新或重新加载链接的浏览器版本。对于非参数化链接也不会发生这种情况。在这些情况下,刷新工作正常,没有任何抱怨。

我意识到我可以使用像Picker这样的东西来创建服务器端路由,但我希望我可以使用更简单的东西。

完整代码可在itemview分支上找到:

https://github.com/ClaaziX/foodshare/tree/itemview

感谢。

1 个答案:

答案 0 :(得分:1)

我在我的应用中遇到了同样的问题。在我的搜索中,我偶然发现了流星论坛上的这个帖子:

https://forums.meteor.com/t/tracker-crashing-with-react-data-meteor/15287/2

正如回复正确指出的那样,错误发生是因为我们的订阅在创建容器时还没有准备好,并且无法返回组件prop的有效值。

返回空对象{}而不是nullundefined(正如数据库查询可能做的那样)应解决问题