FlowRouter.go()
React と を使用しているときに、使用せずに URL の一部をリアクティブに更新する方法はありますreact-layout
か?
DB からドキュメントを取得するために使用されるドキュメントの値を変更したいと考えています。たとえば、次のようなルートがあり、ドキュメント内のフィールド~/users/:username
を更新する場合、ユーザーをその新しい URL に誘導する必要があります。「古い」ルートはなくなりました。username
FlowRouter.go('profile', {data})
以下は私が持っている動作中のバージョンですが、2 つの問題があります。
- を使用する必要があります
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