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

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

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

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

Q&A

解決済

2回答

1696閲覧

reactでフォームから入力された値を使って計算を行い、結果を表示したい

ttpk

総合スコア338

React.js

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

0グッド

0クリップ

投稿2022/05/15 14:34

編集2022/05/15 14:34

ご覧いただきありがとうございます。
reactで割り勘アプリを作成しています。

画面から入力された合計金額と人数から
一人当たりの支払額を計算、表示したいです。

javascript

1import { createRoot } from 'react-dom/client' 2import CalcButton from '../components/CalcButton' 3import {Box} from '@material-ui/core'; 4import {TextField} from '@material-ui/core'; 5import { useForm } from "react-hook-form" 6import React, { useState } from 'react'; 7 8const HookTop = () => { 9 10type FormData = { 11 totalAmount : number; 12 partySize : number; 13} 14 15let result = 0; 16 17 const { register, handleSubmit } = useForm() 18 19 const onSubmit = (data) => { 20 console.log(data) 21 result = data.totalAmount / data.partySize 22 console.log(result) 23 } 24 25 return ( 26 <form 27 onSubmit={handleSubmit(onSubmit)} 28 class="bg-gray-300 w-screen h-screen flex flex-col items-center justify-center space-y-4" 29 > 30 <input placeholder="合計金額" {...register("totalAmount")} /> 31 <input placeholder="人数" {...register("partySize")} /> 32 <input type="submit" /> 33 <p>一人当たりの支払額 {result}</p> 34 35 </form> 36 37 ) 38} 39 40export default HookTop

onSubmit内のconsole.log(result)では
一人当たりの支払額を計算できていることは確認できましたが
画面上では0円と表示されたままになってしまっています。

値を保存する、または表示するために足りない処理は何になるでしょうか?

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

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

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

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

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

guest

回答2

0

result変数をuseStateで宣言してください。

投稿2022/05/16 14:20

lkl191

総合スコア14

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

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

ttpk

2022/05/16 14:22

回答ありがとうございます。 let result = 0; を let [result, setResult] = useState(0); に result = data.totalAmount / data.partySize を result = setResult(data.totalAmount / data.partySize) にそれぞれ変更したところ一人当たりの支払額を表示することができました
guest

0

ベストアンサー

useStateを使って状態管理をすると可能です。
参考:https://ja.reactjs.org/docs/hooks-state.html

投稿2022/05/16 08:08

cohu

総合スコア27

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

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

ttpk

2022/05/16 14:18

回答ありがとうございます let result = 0; を let [result, setResult] = useState(0); に result = data.totalAmount / data.partySize を result = setResult(data.totalAmount / data.partySize) にそれぞれ変更したところ一人当たりの支払額を表示することができました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問