在FlowRouter.go()
使用 Reactreact-layout
和
我想更改用于从数据库获取文档的文档中的值。例如,如果我有一个类似的路由~/users/:username
并更新username
文档中的字段,那么我必须让用户FlowRouter.go('profile', {data})
将用户定向到该新 URL。“旧”路线已不复存在。
以下是我的工作版本,但有两个问题:
- 我必须使用
FlowRouter.go()
,这实际上是一个完整的页面刷新(返回将是 404)。 - 我仍然在控制台中遇到错误,因为在短时间内组件的反应数据实际上是错误的。
组件的相关部分如下所示:
...
mixins: [ReactMeteorData],
getMeteorData() {
let data = {};
let users = Meteor.subscribe('user', {this.props.username});
if (user.ready())
data.user = user;
return data;
}
...
updateName(username) {
Users.update({_id:this.data.user._id}, {$set:{username}}, null, (e,r) => {
if (!e)
FlowRouter.go('profile', {username});
});
},
...
路线是这样的:
FlowRouter.route('/users/:username', {
name: 'profile',
action(params) {
ReactLayout.render(Main, {content: <UserProfile {...params} />});
}
});
我在控制台中遇到的错误是:
Exception from Tracker recompute function:
和
TypeError: Cannot read property '_id' of undefined