###前提・実現したいこと
初めての質問の為、分かりにくい部分があったら申し訳御座いません。
react-bootstrapのmodalを使って制作したフォームで
送信時にModal.Bodyに指定したテキストを表示したい。
###発生している問題・エラーメッセージ
エラーメッセージ等はコンソールに表示されておりません。
送信ボタンを押した時は内容に変化無しですが、
ModalのCloseボタンを押した時に止まっていた処理が実行されるようで
改めてModalを開くと内容が書き換わっているのが確認出来ます。
処理部分:
let p = findDOMNode(this.refs.text);
p.textContent = this.state.data;
render部:
<p ref="text"></p>上記のようにすれば無理矢理書き換える事は出来ますが
スマートでないので…。
###該当のソースコード
React
1class ModalArea extends React.Component{ 2 constructor(props, context){ 3 super(props, context); 4 this.state = {showModal: false} 5 this.open = this.open.bind(this); 6 this.close = this.close.bind(this); 7 } 8 open() { 9 this.setState({showModal: true}); 10 } 11 close() { 12 this.setState({showModal: false}); 13 } 14 formSubmit(e){ 15 e.preventDefault(); 16 var text = e.target.value; 17 this.state = {data:"表示したい内容"} 18 } 19 20 render(){ 21 return( 22 <Modal className="modal-container" 23 show={this.state.showModal} 24 onHide={this.close} 25 animation={true} 26 bsSize="small"> 27 <Modal.Header closeButton> 28 <Modal.Title>タイトル</Modal.Title> 29 </Modal.Header> 30 <Modal.Body> 31 <div> 32 <FormGroup> 33 <FormControl type="text" ref="text" /> 34 <p>{this.state.data}</p> 35 </FormGroup> 36 <FormGroup> 37 <Button bsStyle="primary" bsSize="large" onClick={this.formSubmit.bind(this)} block >送信</Button> 38 </FormGroup> 39 </div> 40 </Modal.Body> 41 <Modal.Footer> 42 <Button onClick={this.close}>Close</Button> 43 </Modal.Footer> 44 </Modal> 45 ); 46 } 47}
###試したこと
処理のタイミングかと思いcomponentDidMount等も試して見たのですが、どうもうまく動作せず。
どうぞ宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/29 05:34
2016/12/29 08:27 編集
2016/12/30 08:11