流星群を私のコンポーネントの1つの支柱として渡していて、いつ実際に小道具を受け取るのか把握しようとしていますか?反応クラスの小道具はいつ入手できますか?
私はgetInitialState
に(例えばthis.props.userData
用)小道具をされたアクセスは未定義と言う試みたが、その後、私はcomponentDidMountでそれにアクセスしてみました、それは未定義と言いますが、renderメソッドではそれが正常に動作します。
render
の前後のどの方法で、私は小道具にアクセスできますか?私は、小道具の持つ価値を使って状態を初期化したいと思います。
たとえば、以下のコードでは、userDataが定義されていないというエラーが表示されます。
getInitialState(){
return{
firstName : this.props.userData.firstName
}
}
編集 だから私はこのような何かをやっている、私はちょうど状態変数を初期化するために小道具を使用しています。
export default React.createClass({
getInitialState(){
return {
email : this.props.user.email
}
},
onFormSubmit(event){
event.preventDefault();
},
onTextFieldChange(event){
switch (event.target.name) {
case "email":
this.setState({
email:event.target.value
});
break;
}
},
render() {
console.log(this.props.user.email);
return (
<div className="panel panel-default">
<div className="panel-heading">
<h3 className="panel-title text-center"><strong>Sign in with Existing Account</strong></h3>
</div>
<form className="form-horizontal" id="frmSignIn" role="form" onSubmit={this.onFormSubmit}>
<div className="modal-body">
<div className="form-group">
<label className="col-xs-4 control-label">Email</label>
<div className="col-xs-8">
<input type="email" id="email" name="email" className="form-control"
value={this.state.email}
onChange={this.onTextFieldChange}
placeholder="[email protected]"
required/>
</div>
</div>
<div className="form-group">
<label className="col-xs-4 control-label">Password</label>
<div className="col-xs-8">
<input type="password" id="password" name="password" className="form-control"
placeholder="Password"
required/>
<label id="signin-error" className="error"> </label>
</div>
</div>
</div>
<div className="panel-footer">
<label className="col-xs-4 control-label"></label>
<div className="col-xs-8">
<input type="submit" className="btn btn-primary pull-right" value="SignIn"/>
</div>
</div>
</form>
</div>
);
}
});
どのように呼びますか? 'getInitialState'の小道具はアンチパターンです。https://facebook.github.io/react/tips/props-in-getInitialState-as-anti-pattern.html –
@JuanMendesコメントありがとうございます。編集?私はfbが言うことをやっているが、入力フィールドには何も表示されないが、コンソールログには値が表示されている。 – mdanishs
あなたはそれがどのように呼び出されているかをまだ説明していない。それは小道具を設置する場所だ。デフォルトの小道具。 propからstateに値をコピーしている場合は、 'this.props.user.email'を使わず、' this.state.user.email'を使うべきです。 –