質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

857閲覧

(React.js) developper toolで値の変更は確認できる → しかしブラウザで反応しない

kazoogon

総合スコア281

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/08/20 12:49

編集2018/08/20 12:55

今していること

画像のような登録画面にて、リアルタイムで条件を確認し、みたしているか判断するコードをreact.jsを使用して作っている
イメージ説明

問題点

①stateのNumberOfPasswordがtrueになった時
=文字が8文字以上入力された時にリアルタイムで画像を切り替える

developper toolで確認する
→8文字以上入力すると、値がtrueになる
→しかし画像は切り替わらない

②文字を8文字以上入力 -> trueになる
しかしそこから文字を消してもtrueのままになっている

よろしくお願いいたします。
また https://codepen.io/mikepro4/full/pvKYZG/ のような挙動を目指しております。

コード

(() => { function PasswordBallon(props){ return ( <div className="passwordBallon"> <ul> <span>Password rules</span> <li> {(() => { if(props.NumberOfPassword == true){ //**ここはreact developperではtrue8文字以上文字を打ち込むとtrueになっている return <img src="../img/check-circle-regular.svg"/>  }else{ return <img src="../img/baseline-error_outline-24px.svg"/>  } })()} &nbsp;8 characters minimum </li> <li><img src="../img/baseline-error_outline-24px.svg"/> Contains at least 1 number</li> <li><img src="../img/baseline-error_outline-24px.svg"/> Cant be "password"</li> <li></li> </ul> </div> ); } class App extends React.Component { constructor() { super(); this.state = { display: false, fields: {}, errors: {}, NumberOfPassword: false, }; this.passwordClick = this.passwordClick.bind(this); } passwordClick() { this.setState({ display: true }); } handleChange(field, e){ let errors = {}; let fields = this.state.fields; fields[field] = e.target.value; this.setState({fields}); if(!fields["password"]){ errors["EmptyPassword"] = "Cannot be empty"; } if(typeof fields["password"] !== "undefined"){ //8文字以上打ち込むと、stateの値をtrueに変更 if(fields["password"].match(/^.{8,}$/)){ // formIsValid = false; this.setState({NumberOfPassword: true}); } } } render(){ return( <div className='signup'> <h1>Create Account</h1> <div><input type="text" name="name" placeholder="name"/></div> <div><input type="text" name="email" placeholder="email"/></div> <div className="wrapperPassword"> <input type="text" name="password" placeholder="password" onClick={this.passwordClick} onChange={this.handleChange.bind(this, "password")} value={this.state.fields["password"]} /> { this.state.display ? <PasswordBallon /> : null } </div> <div><input type="text" name="passConfirm" placeholder="confirm password"/></div> </div> ); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

componentにpropsを渡すのを忘れておりました
<PasswordBallon NumberOfPassword = {this.state.NumberOfPassword}/>

投稿2018/08/20 17:29

kazoogon

総合スコア281

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問