Reactに挑戦してみる 10
概要
Reactに挑戦してみる10。フォームのバリデーションとかをやる。
参考書籍
WebデベロッパーのためのReact開発入門 JavaScript UIライブラリの基本と活用
- 作者: 柴田文彦
- 出版社/メーカー: インプレス
- 発売日: 2016/11/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
フォームのサブミットとバリデーション(formタグとonSubmit属性)
var FormSubmit = React.createClass({ # State selectionの初期化。ここでは、propsのselectionの値をセットする。 getInitialState: function(){ return {selection: this.props.selection}; }, # onChangeで呼び出されるメソッドをセットする。 handleChange: function(event){ var selection = this.state.selection var position = selection.indexOf(event.target.value); if (event.target.checked){ selection.push(event.target.value); }else{ selection.splice(position, 1); } this.setState({selection: selection}); console.log(this.state.dispText); }, # onSubmitで呼び出されるメソッドを設定する。 handleSubmit: function(event){ # onSubmitのイベントがブラウザによって処理されないようにするとのこと。 event.preventDefault(); # チェックされている数を数えて、2未満の場合は、何も返さない設定。 if (this.state.selection.length < 2) return; console.log('Submitting: ', this.state.selection); this.setState({selection: []}); }, render: function(){ return (<form onSubmit={this.handleSubmit}> 2つ以上を選んでください: <div> <input type="checkbox" value="first" checked={this.state.selection.indexOf('first') !== -1} onChange={this.handleChange} />最初の選択肢 </div> <div> <input type="checkbox" value="second" checked={this.state.selection.indexOf('second') !== -1} onChange={this.handleChange} />次の選択肢 </div> <div> <input type="checkbox" value="third" checked={this.state.selection.indexOf('third') !== -1} onChange={this.handleChange} />最後の選択肢 </div> <input type="submit" value="決定" /> </form>); } }); ReactDOM.render( <FormSubmit selection={[]} />, document.getElementById('content') );
複雑だなぁ〜まあでもこの辺は、djangoとかのvalidationでやってしまうからいいか。