我目前正在开发的应用程序使用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
感谢。
答案 0 :(得分:1)
我在我的应用中遇到了同样的问题。在我的搜索中,我偶然发现了流星论坛上的这个帖子:
https://forums.meteor.com/t/tracker-crashing-with-react-data-meteor/15287/2
正如回复正确指出的那样,错误发生是因为我们的订阅在创建容器时还没有准备好,并且无法返回组件prop的有效值。
返回空对象{}
而不是null
或undefined
(正如数据库查询可能做的那样)应解决问题