前提・実現したいこと
TypeScript, React, Redux で、emailとpasswordを入力してログインする、というフォームを作っています。
redux-formを用いて作成しています。
(仕様といたしましては、emailとpasswordを入力 → Submitする → 入力データを受け取った非同期ActionCreaterをdispatch)
発生している問題・エラーメッセージ
handleSubmitについてです。
reduxFormで該当のコンポーネントをdecolateすれば、
そのコンポーネントは、propsでhandleSubmitを受け取ると理解しています。
ですが、VScode上は「プロパティ 'handleSubmit' は型 '{ children?: ReactNode; }' に存在しません」と表記されていて、VScodeのエラーなのか、自分が間違っているのかわかりません。
const handleSubmit: any プロパティ 'handleSubmit' は型 '{ children?: ReactNode; }' に存在しません。ts(2339)
該当のソースコード
以下は該当のログインフォームです。
非同期ActionCreaterを外部から呼び出していますが、本件とはあまり関係ないと感じます。
TypeScript
1import React from 'react'; 2import { Field, formValues, reduxForm } from 'redux-form'; 3import { login } from '../modules/ActionCreater' // 非同期ActionCreater 外部ファイル 4import { useDispatch } from 'react-redux' 5 6type formValues = { 7 email: string; 8 password: string; 9} 10 11const Login: React.FC = (props) => { 12 const dispatch = useDispatch() 13 14 15 16 17 18 // ここでhandleSubmitに赤の下線、エラーメッセージ 19 // propsでどうして受け取れないのでしょうか...? 20 const { handleSubmit } = props 21 22 23 24 25 26 const renderInput = (field: { input: any; label: any; }) => { 27 const { input, label } = field 28 return( 29 <div> 30 <input {...input} placeholder={label}/> 31 </div> 32 ); 33 } 34 35 36 37 38 // onSubmitは入力データを受け取り、 39 // 非同期ActionCreaterに渡して、非同期ActionCreaterをdispatchする 40 const onSubmit = (formValues: formValues) => { 41 dispatch(login(formValues)) 42 } 43 44 45 46 return ( 47 <div> 48 <h1>サインイン</h1> 49 <form onSubmit={handleSubmit(onSubmit)}> 50 <div><Field label="email" name="email" type="text" component={renderInput} /></div> 51 <div><Field label="password" name="password" type="text" component={renderInput} /></div> 52 <div> 53 <button type="submit">ログイン</button> 54 </div> 55 </form> 56 </div> 57 ) 58 59 60} 61 62export default reduxForm({ form: 'loginForm' })(Login); 63
reduxFormのpropsの型はVScodeでは反映されない、を疑っているのですが、、、
どうかよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/16 01:41