React + Node.js
フォーム部品の扱い
テキストボックス
import React from 'react'
import ReactDOM from 'react-dom'
class TextForm extends React.Component {
constructor(props){
super(props)
this.state = { value: '' }
}
render () {
return (
<div>
<form onSubmit={e => this.doSubmit(e)}>
<input type='text'
onChange={e => this.doChange(e)}
value={this.state.value} />
<input type='submit' />
</form>
</div>
)
}
doChange (e) {
this.setState({ value: e.target.value })
}
doSubmit (e) {
e.preventDefault()
window.alert(this.state.value)
}
}
ReactDOM.render(
<TextForm />,
document.getElementById('root')
)
import React from 'react'
import ReactDOM from 'react-dom'
class CBoxForm extends React.Component {
constructor(props) {
super(props)
this.state = { check: true }
}
render() {
return ( <div>
<form onSubmit={e => this.doSubmit(e)}>
<label>
<input type="checkbox"
onChange={e => this.doChange(e)}
checked={this.state.check}
/>食べる
</label><br />
<input type="submit" value='決定' />
</form>
</div>)
}
doChange (e) {
this.setState({ check: !this.state.check })
}
doSubmit (e) {
e.preventDefault()
window.alert(this.state.check ? '食べる' : '食べない')
}
}
ReactDOM.render(
<CBoxForm />,
document.getElementById('root')
)
テキストエリア
import React from 'react'
import ReactDOM from 'react-dom'
class TextAreaForm extends React.Component {
constructor(props) {
super(props)
this.state = { value: 'Hello' }
}
render () {
return ( <div>
<form onSubmit={e => this.doSubmit(e)}>
<textarea
onChange={e => this.doChange(e)}
value={this.state.value}
/><br />
<input type="submit" value='決定'/>
</form>
</div>)
}
doChange (e) {
this.setState({ value: e.target.value })
}
doSubmit (e) {
e.preventDefault()
window.alert(this.state.value)
}
}
ReactDOM.render(
<TextAreaForm />,
document.getElementById('root')
)
import React from 'react'
import ReactDOM from 'react-dom'
class TextAreaForm extends React.Component {
constructor(props) {
super(props)
this.state = { value: 'Hello' }
}
render () {
return ( <div>
<form onSubmit={e => this.doSubmit(e)}>
<textarea
onChange={e => this.doChange(e)}
value={this.state.value}
/><br />
<input type="submit" value='決定'/>
</form>
</div>)
}
doChange (e) {
this.setState({ value: e.target.value })
}
doSubmit (e) {
e.preventDefault()
window.alert(this.state.value)
}
}
ReactDOM.render(
<TextAreaForm />,
document.getElementById('root')
)
セレクトボックス
import React from 'react'
import { ReactDOM } from 'react-dom'
class SelectForm extends React.Component {
constructor (props) {
super(props)
this.state = {
items: props.items,
value: props.value
}
}
render () {
const options = this.state.items.map( i => {
return( <option key={i}
value={i}> {i}
</option>)
})
return( <div>
<form onSubmit={e => this.doSubmit(e)}>
<select
value={this.state.value}
onChange={e => this.doChange(e)}>
{options}
</select><br />
<input type="submit" />
</form>
</div>)
}
doChange (e) {
this.setState({ value: e.target.value })
}
doSubmit (e) {
e.preventDefault()
window.alert(this.state.value)
}
}
ReactDOM.render(
<SelectForm
items={['チョコ', '梅干し', 'ラムネ']}
value='ラムネ' />,
document.getElementById('root')
)