リアサイトのリンクがあるサイドバーがあります。このボタンの目的は、ログインしたユーザーを/ user /:のようなURLでプロファイルページにリダイレクトすることです。user_idリアクタールータリンクまたはブラウザ履歴.pushアドレスバーのurlを変更しますが、URLに動的パラメータを含むページからリダイレクトしません
ほとんどの場合、問題はなくロジックを定義しました。ここのように、それがどのように見えるかです:それは私のルータである
export class SideBar extends React.Component {
// ... some omitted code here ...
getProfileUrlString() {
/* Function for 'to' attribute of profile Link button in the sidebar.
* Returns user's profile URL if he's logged in,
* otherwise redirects him to the /login page
*/
if (localStorage['token']) {
return `/user/${localStorage['id']}/`
} else {
return '/login'
}
}
render() {
return (
<div id="sidebar-wrapper" role="navigation">
<ul className="sidebar-nav">
<li><Link onlyActiveOnIndex activeStyle={{color: "#53acff"}}
to="/">Home</Link></li>
<li><Link onlyActiveOnIndex activeStyle={{color: "#53acff"}}
to={this.getProfileUrlString()}>Profile</Link></li>
{this.renderSignOutBtn()}
</ul>
</div>
);
}
}
:私が訪れたとき
ReactDOM.render(
(<Router history = {browserHistory}>
<Route path = "/" component = {APP}>
<IndexRoute component = {Home} />
<Route path = "home" component = {Home}/>
<Route path = "/login" component = {LoginComponent} />
<Route path = "/registration" component = {RegistrationComponent} />
<Route path = "/user/:user_id" component = {Profile} />
</Route>
</Router>),
document.getElementById('app'));
のは、私はアカウントを持っているし、idが102そう鉱山プロフィールページであると言ってみましょう/user/102
でご利用いただけます'/'や '/ login'のような非動的URLを入力してから、NavbarのProfile Linkをクリックすると完全に動作します。それは私のプロフィールに正常にリダイレクトされます。しかし、私は/ user/5のようなURLで他のユーザーのページを訪問し、何も起こらないようにプロファイルのリンクをクリックします! 1つの変わったことを除いて:アドレスバーのURLは/ user/5から/ user/102に変更されます。しかし、プロフィールのコンポーネントは再レンダリングされず、ユーザー番号5のすべてのデータが私の前にあります。
onClickイベントのロジックをいくつか再定義し、browserHistory.pushリダイレクトを割り当てようとしましたが、同じ問題もあります。私は同じ結果でthis.history.pushも試しました。
同様の動的パラメータを持つ類似のページのURLに動的IDを持つページにリダイレクトするにはどうすればよいですか?
が反応:15.3.2
反応-ルータ:2.8.1
解決しましたか? – Polyakoff
@Polyakoffいいえ、問題はまだ存在します。私はハッキングを行い、誰かがそのリンクをクリックするとページが更新されますが、SPAソリューションではありません。 – juggernaut