私はプロジェクトのサーバー側のビューをレンダリングするためにReact with expressを使用していますが、問題が発生しました。ユーザーが入力を変更したときにReactがコンポーネントの状態を更新しない
私は初めてログインするユーザーがいるコンポーネントがあります。ユーザーの新しいパスワードを入力して確認するための2つの入力があります。入力したパスワードが少なくとも8文字で、両方の入力の値が同じであることを確認しようとしています。
Reactはコンポーネントの状態を更新していないようで、私の検証プロセスは機能しません。私は何か間違っているのですか?
セットpassword.jsx
module.exports = React.createClass({
getInitialState: function() {
return {
sPassword: '',
validLength: false,
validPassword: false
}
},
checkLength: function(event) {
var pLength = event.target.value;
pLength.length >= 8 ?
this.setState({ validLength: true }) :
this.setState({ validLength: false });
},
checkPassword: function(event) {
event.target.value === this.state.sPassword ?
this.setState({ validPassword: true, sPassword: event.target.value}) :
this.setState({ validPassword: false });
},
render: function() {
return (
<Layout>
<Form action='/auth/setpassword' method='POST' name='setPassword'>
<h1>Welcome</h1>
<p>...</p>
<div className='row'>
<div className='col-sm-6'>
<Input
type='password'
label='Introduzca su nueva contraseña'
name='password'
onChange={this.checkLength}
value={this.state.sPassword}
/>
</div>
<div className='col-sm-6'>
<Input
type='password'
label='Escriba de nuevo su contraseña'
name='confirm_password'
onChange={this.checkPassword}
/>
</div>
</div>
<SubmitButton value='Guardar nueva contraseña' />
<div>
<p>Contraseña verificada: <span>{this.state.sPassword}</span></p>
</div>
</Form>
</Layout>
)
}
});
私は、パスワードの長さを確認するために、最初の入力にcheckLength()
を使用しています:ここではコードです。次にcheckPassword()
は、両方の入力が同じコードを持っていることを確認してから、this.state.sPassword
を最初の入力値に更新し、システムエンドポイントに送信します。
SubmitButton
コンポーネントの後に、this.state.sPassword
の値を印刷して、状態が変化しているかどうかを確認していますが、変更されていません。手伝って頂けますか?ありがとう。