🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

React.js

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

Q&A

解決済

2回答

1911閲覧

Material-UI TextField select 利用時のエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

React.js

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

0グッド

0クリップ

投稿2019/11/28 17:00

前提・実現したいこと

React-Redux Appにおいてselect boxで選択された値をstateに反映させたいです。
Material-UIのTextFieldにselectを下記コードのように設定したところエラーが出て躓いています。

ソースコード

js

1import React from 'react'; 2import InputAdornment from '@material-ui/core/InputAdornment'; 3import TextField from '@material-ui/core/TextField'; 4import MenuItem from '@material-ui/core/MenuItem'; 5import AccountCircle from '@material-ui/icons/AccountCircle'; 6 7export const FormMemberSelector = ({members, onChange, value}) => { 8 const handleSelectedName = (e) => { 9 onChange(members.find((member) => member.id === parseInt(e.target.value, 10))) 10 }; 11 return( 12 <TextField 13 select 14 value={value ? value.id : ''} 15 onChange={handleSelectedName} 16 InputProps={{ 17 startAdornment: <InputAdornment position="start"><AccountCircle /></InputAdornment> 18 }} 19 > 20 <option value=''></option> 21 {members.map((member) => ( 22 <MenuItem key={member.id} value={member.id}> 23 {member.name} 24 </MenuItem> 25 ))} 26 </TextField> 27 ) 28} 29

ブラウザ上でselect boxの値を選択した際に下記のようなエラーメッセージが出ます。

backend.js:6 Warning: Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.

Material-UI TextField select 利用時の上記エラーの解決方法のご教示、よろしくお願いいたします。

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

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

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

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

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

thyda.eiqau

2019/11/28 23:44

期待されるmemberとvalueの値をご提示ください
guest

回答2

0

ベストアンサー

こんにちは

以下のように修正してみると、いかがでしょうか?

修正前:

jsx

1<option value=''></option>

修正後:

jsx

1<MenuItem value="" />

以下は、ご質問にあるコードを codesandbox に転記して、上記の修正をしたうえで、動作確認用のindex.jsを追加したものです。

参考になれば幸いです。

補足

members の要素のidが、文字列ではなく数値ならば、e.target.value にも数値で入っているので、parseIntしなくても、以下でよいかと思います。

javascript

1const handleSelectedName = e => { 2 onChange(members.find(member => member.id === e.target.value)); 3};

投稿2019/11/29 14:35

編集2019/11/29 23:29
jun68ykt

総合スコア9058

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

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

退会済みユーザー

退会済みユーザー

2019/11/30 09:27

ご指摘通り修正したところ、問題なく動きました! ご回答ありがとうございます。 また、parseInt見落としていました。ご助言に感謝いたします.
jun68ykt

2019/11/30 09:32

どういたしまして! > 問題なく動きました! とのことで、よかったです????
guest

0

コンストラクタに渡されるmembersとvalueの値がわからないと何とも言えませんが、こちらはMaterial-UIは関係なく、Reactが吐いているエラーなので、ドキュメントの内容をご確認されるのがよいと思います。

投稿2019/11/28 23:52

thyda.eiqau

総合スコア2982

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問