私はReactを学ぼうとしています。私のApp.jsxでは、ルートを設定しています。そして、彼らは働く。私のコンポーネントの1つはサインインコンポーネントです。サインインボタンをクリックすると、アプリでさえも発射する必要があります。だから、私は関数を作成し、サインインからイベントを呼び出すことができるように、SignInコンポーネントにパラメータを渡したいと思います。しかし、ルートを使ってコンポーネントに関数を渡す方法がわかりません。子要素内の反応とメソッド
export default class App extends React.Component {
handleLogin() {
console.log("Ahhhh")
}
render() {
return (
<div>
<Router>
<div>
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
<Route path='/contact' component={Contact} />
<Route path="/signin" component={SignIn} />
<Route path="/register" component={Register} />
</div>
</Router>
<Footer />
</div>
)
}
}
ページでの私のサインがちょうどです:
ここexport default class SignIn extends Component {
render() {
return (
<div>
<Navbar />
<div className="row justify-content-md-center">
<div className="col-lg-4">
<SignInBox />
</div>
</div>
</div>
)
}
}
私はメソッドを取得するために小道具を使用してから、私のサインインもボックスにそれを渡すことができると思います。
私のサインボックスはフォームです。ここでは、検証するためにユーザー名とパスワードをアプリケーションに戻したいと思います。私はログインボタンを隠すためにナビゲーションバーを更新し、ログアウトボタンを表示したいので、Appにそれを取得する必要があります。
export default class SignInBox extends Component {
constructor(props) {
super(props);
this.state = {
username: '',
password: '',
rememberme: true
}
this.handleSignin = this.handleSignin.bind(this);
}
handleSignin(event) {
event.preventDefault();
this.setState(
{
username: this.refs.username.value,
password: this.refs.password.value
},() => console.log(this.state)
);
}
render() {
return (
<div>
<div className="container">
<div className="form-signin">
<control-label for="inputEmail" className="sr-only">Email address</control-label>
<input type="email" ref="username" id="inputEmail" className="form-control" placeholder="Email address" required autoFocus />
<control-label for="inputPassword" className="sr-only">Password</control-label>
<input type="password" ref="password" id="inputPassword" className="form-control" placeholder="Password" required />
<div className="checkbox">
<control-label>
<input type="checkbox" /> Remember me
</control-label>
</div>
<button className="btn btn-lg btn-primary btn-block" type="button" onClick={this.handleSignin}>Sign in</button>
<div className="footer-text"><Link to="/"> Forgotten Password?</Link></div>
</div>
</div>
</div>
);
}
}
私はそれが唄えページに限定されなければならないとして、それは、アプリケーションでの方法で看板を持っているのは間違いだと思う - しかし、どのように私は、ナビゲーションバーを更新することができますか? App.jsxはすべてのコンポーネントの親です。
(ワーキングコード:https://github.com/CraigInBrisbane/ReactLearning)私はこれをどのように処理するか
。
あなただけの私は非常に提供するReduxのに探してお勧めし始めている場合グローバルな状態で、コンポーネント間で簡単に共有することができます。https://github.com/reactjs/redux/tree/master/docs – brub