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

computerReact

Reactフレームワーク、

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

について解説です。

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

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

筆者プロフィール

筆者プロフィールアイコン

【現職】プロマネ/システムプランニング

【副業】ブログ(月間7万PV)/YouTube/Web・アプリ制作

【元】外資系金融機関の営業

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

ChatGPTでLINEボット

【今なら無料】ChatGPTでLINEボットを作りました!

友だち追加

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

コード

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})

です

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

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