Tsuyano Syodaさんの書籍「React.js&Next.js超入門」を勉強しています。
169ページのフォームの利用で書籍の内容の通りに書いたつもりなのですが、onChangeにてイベントがうまく反映されていないように感じます。
理想的には、
①フォーム内のinputに入力した値が変更され、onChangeによりdoChangeが実行されthis.inputが変化
②フォーム内のsubmitを押すことでonSubmitによりdoSubmitが実行されthis.state.messageが変化
③変化されたstateの内容が反映
と想定しているのですが、①の段階でうまく行っていなく感じました。どこが間違っているのか教えていただきたいです。
JavaScript
1import React from 'react'; 2import logo from './logo.svg'; 3import './App.css'; 4import Rect from "./Rect" 5 6class App extends React.Component { 7 input = ""; 8 9 msgStyle={ 10 fontSize:"20pt", 11 color:"#900", 12 margin:"20px 0px", 13 padding:"5px", 14 }; 15 16 inputStyle={ 17 fontSize:"12pt", 18 padding:"5px" 19 } 20 21 constructor(props) { 22 super(props); 23 this.state={ 24 message:"type your name:" 25 }; 26 this.doChange=this.doChange.bind(this); 27 this.doSubmit=this.doSubmit.bind(this); 28 } 29 30 doChange(event){ 31 this.input=event.target.value; 32 } 33 34 doSubmit(event){ 35 this.setState=({ 36 message:"Hello, "+this.input+"!!" 37 }); 38 event.preventDefault(); 39 } 40 render() { 41 return <div> 42 <h1>React</h1> 43 <h2>{this.state.message}</h2> 44 <form onSubmit={this.doSubmit} > 45 <span style={this.inputStyle}></span>Message: 46 <input type="text" style={this.inputStyle} onChange={this.doChange} /> 47 <input type="submit" style={this.inputStyle} value="Click"/> 48 </form> 49 </div>; 50 } 51} 52 53 54export default App; 55
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/30 06:32
2020/10/30 06:52