質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

377閲覧

reactでのformの送信について

raguel

総合スコア25

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/07/20 16:27

編集2022/07/23 16:54

reactでのformの送信について

react

1const formdata = { 2 aaa: "○○○", bbb: "○○○○○" 3};

と記述し、console.log(formdata);を実行すると、

{aaa: '○○○', bbb: '○○○○○'} aaa: "○○○" bbb: "○○○○○"

と表示されますが、
reactでformを記述・実行し、console.log(formdata);を実行すると、

{"aaa":"○○○","bbb":"○○○○○"}

と、複数のinput内容が合わさって表示されます。

上記の様に、formdataを連想配列として格納したいのですが、解決方法はあるのでしょうか。

react

1<form onSubmit={handleSubmit((formdata) => setData(JSON.stringify(formdata)))}> 2<input {...register("aaa")} type="text" name="aaa" /> 3<input {...register("bbb")} type="text" name="bbb" /> 4<input type="submit" /> 5</form>

formには、react-hook-formをインポートしています。

以下が、App.js の全文です。

react

1/* App.js */ 2 3import { useState } from "react"; 4import { useForm } from "react-hook-form"; 5 6export function App() { 7 const { register, setValue, handleSubmit } = useForm(); 8 const [formdata, setData] = useState(""); 9 10 11 return ( 12 <div style={{ 'padding': '20px' }}> 13 <form onSubmit={handleSubmit((formdata) => setData(JSON.stringify(formdata)))}> 14 <input {...register("aaa")} type="text" name="aaa" /> 15 <input {...register("bbb")} type="text" name="bbb" /> 16 <input type="submit" /> 17 </form> 18 19 <div>formdata=「{formdata}」</div> 20 <div>formdata.aaa=「{formdata.aaa}」</div> 21 <div>formdata.bbb=「{formdata.bbb}」</div> 22 23 {console.log(formdata)} 24 25 </div > 26 27 ); 28} 29 30export default App;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/07/20 22:36

> 複数のinput内容が合わさって表示されます。 単に表示の違いにしか見えないのですが、何がどう違うと主張したいのでしょうか?
raguel

2022/07/22 14:08

ご返答、有難うございます。 上記プログラムでは、 「formdata.aaa」には「○○○」が挿入されていて、 「formdata.bbb」には「○○○○○が挿入されています。 下記プログラムでは、 「formdata」には「{"aaa":"○○○","bbb":"○○○○○"}」が挿入されていて、 「formdata.aaa」には何も挿入されていません。 「formdata.bbb」にも何も挿入されていません。
maisumakun

2022/07/22 14:10

データの受信側はどのようなコードになっていますか?
raguel

2022/07/23 16:57

App.js の全文を追加させていただきました。 ブラウザで、「○○○」と「○○○○○」を入力すると、以下の様に表示されます。 formdata=「{"aaa":"○○○","bbb":"○○○○○"}」 formdata.aaa=「」 formdata.bbb=「」
guest

回答1

0

ベストアンサー

以下のように修正するとよいかと思います。

diff

1 export function App() { 2 const { register, setValue, handleSubmit } = useForm(); 3- const [formdata, setData] = useState(""); 4+ const [formdata, setData] = useState({}); 5 6 7 return ( 8 <div style={{ 'padding': '20px' }}> 9- <form onSubmit={handleSubmit((formdata) => setData(JSON.stringify(formdata)))}> 10+ <form onSubmit={handleSubmit((formdata) => setData(formdata))}> 11 <input {...register("aaa")} type="text" name="aaa" /> 12 <input {...register("bbb")} type="text" name="bbb" /> 13 <input type="submit" /> 14 </form> 15 16- <div>formdata=「{formdata}」</div> 17+ <div>formdata=「{JSON.stringify(formdata)}」</div> 18 <div>formdata.aaa=「{formdata.aaa}」</div> 19 <div>formdata.bbb=「{formdata.bbb}」</div> 20

投稿2022/07/23 20:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raguel

2022/07/24 13:59

望んでいた完璧な答えに感謝です。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問