使用React和FlowRouter.go()
时,有没有办法在不使用react-layout
的情况下有效更新网址的一部分?
我想更改用于从数据库获取文档的文档中的值。例如,如果我有~/users/:username
之类的路由并更新文档中的username
字段,则必须使用FlowRouter.go('profile', {data})
将用户定向到该新网址。 " old"路线消失了。
以下是我的工作版本,但有两个问题:
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