【React学習用(コピペ可)】Formを扱う「複数のFormから値を取得する」

computerReact

Reactフレームワーク、

複数のFormから値を取得する

について解説です。

間違った記述をしてしまうとこんな感じになります

下記のように正しい記述ができるよう解説をしていきます

「複数のフォームから値を取得する」イメージ動画

コード

import React from "react"

class App extends React.Component{
    constructor(){
        super()
        this.state = {
            firstName: "",
            lastName: "",
        }
        this.handleChange = this.handleChange.bind(this)
    }

    handleChange(e) {
        const {name, value} = e.target
        this.setState({
            [name]: value
        })
    }

    render(){
        return (
            <form>
                <input 
                    type="text" 
                    name="firstName" 
                    value={this.state.firstName}
                    placeholder="First Name" 
                    onChange={this.handleChange} 
                />
                <input 
                    type="text" 
                    name="lastName" 
                    value={this.state.lastName}
                    placeholder="Last Name" 
                    onChange={this.handleChange} 
                />
                    <h1>{this.state.firstName} {this.state.lastName}</h1>
            </form>
        )
    }
}

export default App

解説

全てはここにあり!

handleChange(e) {
        const {name, value} = e.target
        this.setState({
            [name]: value
        })
    }

const {name, value} = e.target

e.targetから「name」、「value」を取り出し、

[name]: value

それぞれのname変数にvalueを格納する

注意点としては、

<input 
                    type="text" 
                    name="firstName" 
                    value={this.state.firstName}
                    placeholder="First Name" 
                    onChange={this.handleChange} 
                />
                <input 
                    type="text" 
                    name="lastName" 
                    value={this.state.lastName}
                    placeholder="Last Name" 
                    onChange={this.handleChange} 
                />

<input />内のnameに、this.stateのキーと同じ名前を指定すること

それにより、

[name]:value

が成り立ち、this.stateの値も正しく変更が反映されます

まとめ

一度この記述を覚えれば、次からは問題ないと思います

ポイントは、

{name, value} = e.target

と、

this.state({[name]:value})

です

ぜひここでマスターしてしまいましょう!

✔月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

特徴は以下の通り。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>詳細はこちら<<

安いWebデザインスクール「デザナル」を徹底分析

タイトルとURLをコピーしました