私のユーザーがログインしてページをリフレッシュすると、ログインページが実際のページを表示する前に一時的に表示されます。私は空白のページを表示するか、代わりに表示するページをロードしたいと思います。私は最初にcomponentWillMount()
に何らかのデータ処理が起こっているので、なぜそれが最初に表示されているのか、実際にはわかりません。再ログインする前にログインページが最初に表示される - Reactjs
ここに関連するコードです:
componentWillMount()
{
let url = "src/php/login.php";
axios.get(url, {
params: {
get_userid : ""
}
})
.then(r =>
{
if (r.data)
{
console.log(r.data);
this.props.dispatch({ type: "new_user_id", payload: { id: r.data } });
}
})
.catch(error => console.log(error));
}
render() {
var { user_id } = this.props;
if (!user_id)
{
return (
<div>
some login logic
<button onClick={this.new_user_id}>New user</button>
<div style={{color : "red"}}>
{ this.state.error && "Could not validate username/password. Please check." }
</div>
<form onSubmit={this.handle_submit}>
<div>
Username: <input id="username" name="username" type="text" />
</div>
<div>
Password: <input id="password" name="password" type="password" />
</div>
<input type="submit" value="submit" />
</form>
</div>
);
}
else
{
return (
<div style={{padding: "0 5px"}}>
User ID: {user_id}
<div style={{padding: "5px 0"}}>
<Link activeClassName="active" className="default bottom-radius" to='main'>Main Menu</Link>
<Link activeClassName="active" className="default bottom-radius" to='search'>Search</Link>
<Link activeClassName="active" className="default bottom-radius" to="form">Form</Link>
<a className="bottom-radius" style={{ float: "right", color : "blue", backgroundColor: "red", padding: "5px", cursor : "pointer" }} onClick={this.logout}>Logout</a>
</div>
<div style={{paddingTop: "10px"}}>
{this.props.children}
</div>
</div>
);
}
}
user_id
するとあなたが約束してデータ処理を持っているあなたのcomponentWillMount()
機能でintially ""
ありがとう、答えはかなりjakeeのXDに似ていた –
しかし、私は最初でした:)あなたが両方とも同等に役立つことが判明した場合は、回答旗を受け入れてうれしいです。 ) –
ああ、私は22分前の方がもっと速いと誤読した。<変わるだろう。 –