teratail header banner
teratail header banner
質問するログイン新規登録
Material-UI

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

React.js

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

Q&A

解決済

1回答

2884閲覧

[React, Material-UI] TextFieldのフォーカスが1文字打つたびに外れてしまう

yahi_23

総合スコア10

Material-UI

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

React.js

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

0グッド

0クリップ

投稿2022/08/29 05:44

0

0

発生している問題・エラーメッセージ

React, Material-UIを使って開発をしています。
Material-UIのTextFieldで1文字打つたびにフォーカスが外れてしまいます。
なお、TextFieldで入力した値はreact-hook-formでwatchしています。
原因、解決方法を教えていただきたいです。

該当のソースコード

react

1return ( 2 <form onSubmit={handleSubmit(onSubmit)}> 3 <MuiGrid 4 container 5 xs={7} 6 md={8} 7 sx={{ m: 'auto' }} 8 alignItems="center" 9 justifyContent="center"> 10 <Table aria-label="collapsible table"> 11 <TableBody> 12 <TableRow sx={{ p: 0, height: '56px' }} key={'1'}> 13 <TableCell 14 sx={{ p: 1.5, width: '20%' }} 15 component="tr" 16 scope="row"> 17 <Typography>割合(%)</Typography> 18 </TableCell> 19 <TableCell 20 component="tr" 21 scope="row" 22 sx={{ 23 p: 1.5, 24 textAlign: 'center', 25 justifyContent: 'space-between', 26 alignItems: 'center', 27 }}> 28 29 // ここが該当箇所です。 30 // TextFieldで入力した値はreact-hook-formでwatchしています。 31 <TextField 32 label="割合" 33 type="text" 34 margin="normal" 35 sx={{ margin: 0, width: 100 }} 36 inputRef={el => (keyRef.current = el)} 37 {...register('netRate', { 38 pattern: /^[0-9]+$/, 39 setValueAs: value => 40 !parseInt(value) ? 0 : parseInt(value), 41 })} 42 InputProps={{ 43 inputProps: { 44 style: { textAlign: 'right', padding: 10 }, 45 }, 46 }} 47 /> 48 49 </TableCell> 50 </TableRow> 51 </TableBody> 52 </Table> 53 </form> 54 ) 55})

試したこと

以下の方法を試してみましたが、解決できてませんでした。

TextFieldを別コンポーネントにして外に出す
inputProps={{ autoFocus: true }} を追記する
inputRef={input => input && input.focus()} でフォーカスさせる

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。Textfield前後のコンポーネントで余計なレンダリングがされてしまっていたことが原因でした。

投稿2022/08/29 11:45

yahi_23

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問