
現在ポートフォリオ を作成しており、シンプルなログインページを作っているのですが、送信ボタンを押しても反応せず困ってます。
以前はうまくいっていたのに、リファクタリングをした途端うまくいかなくなりました。
コンパイルは出来ています
行いたいこと
・react-hook-formを使い送信(この場合、cosole.logも出来ていない)
・Chakra uiのbutton タグで送信したい
・リファクタリング内容
1 yupでSignupSchemaを抽象化
2 inputタグからbuttonタグへ変更
試したこと
- fromの中に基本は入れたままtype=”submit”した
- buttonタグからinput type=”submit”としても変わらない
- 関数はconsole.logにしたけど変わらない →consoleに表示されない
- chakra uiのFormControlを1ラベルごとにタグで挟んだが変わらない
- FormControlのisInvalid={errors}を削除したが変わらない
- 再度yarn add npm react-hook-form でインストールしなおし→buildし直し→変わらず。
- 一度全て消して、reacthookformのコードをコピペしてもできない
login.jsx
/* eslint-disable */ import React, { memo } from 'react'; import { Box, Divider, Flex, Heading, Input, Stack, FormControl, Button, FormErrorMessage, FormLabel, } from '@chakra-ui/react'; import { useForm } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; // hooks import useAuth from '../../hooks/useAuth'; // リファクタリングしたスキーマ import SignupSchema from '../../schema/SignupSchema'; const Login = memo(() => { const { login } = useAuth(); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(SignupSchema), }); const onSubmit = (data) => { login(data); }; ここはconsole.logで試した箇所 // const onSubmit = (data) => { // // eslint-disable-next-line no-console // console.log(data); // }; // eslint-disable-next-line no-console // const onSubmit = (data) => console.log(data); return ( <Flex alignItems="center" justifyContent="center" height="100vh"> <Box bg="white" w="sm" p={4} borderRadius="md" shadow="md"> <Heading as="h1" size="lg" textAlign="center"> ログイン </Heading> <Divider my={4} /> <form onSubmit={handleSubmit(onSubmit)}> <Stack spacing={6} py={4} px={10}> <FormControl isInvalid={errors}> <FormLabel htmlFor="email">email</FormLabel> <Input type="text" placeholder="email" {...register('email')} /> <FormErrorMessage>{errors.email?.message}</FormErrorMessage> <FormLabel htmlFor="password">password</FormLabel> <Input type="password" placeholder="password" {...register('password')} /> <FormErrorMessage>{errors.password?.message}</FormErrorMessage> </FormControl> <Button colorScheme="teal" isLoading={isSubmitting} type="submit"> ログイン </Button> ここのinputのコメントアウトはinputタグで試した場合。 {/* <input type="submit" value="login" /> */} </Stack> </form> 上のformを全て消して、react-hook-form公式からコピペしたコードで試したのがこちらのコメントアウト部分 {/* <form onSubmit={handleSubmit(onSubmit)}> <input defaultValue="test" {...register('example')} /> <input {...register('exampleRequired', { required: true })} /> {errors.exampleRequired && <span>This field is required</span>} <input type="submit" /> </form> */} </Box> </Flex> ); }); export default Login;
signupSchema.js
import * as yup from 'yup'; const SignupSchema = yup.object().shape({ name: yup.string().max(50, '名前は50文字以内で入力して下さい').required('名前は必須です'), email: yup.string().email('正しいメールアドレスを入力してください').required('emailは必須です'), password: yup .string() .min(4, 'passwordは4文字以上で入力して下さい') .max(15, 'passwordは15文字以内で入力して下さい') .required('パスワードは必須です'), password_confirmation: yup.string().oneOf([yup.ref('password'), null], '再入力passwordが一致しません'), }); export default SignupSchema;
お知恵をいただけると幸いです。
以下コンソールの情報を追記します
[HMR] Waiting for update signal from WDS... login:1 [DOM] Found 2 elements with non-unique id #field-3: (More info: https://goo.gl/9p2vKq) <input type="text" placeholder="email" name="email" id="field-3" aria-invalid="true" class="chakra-input css-1c6j008" aria-describedby="field-3-feedback"> <input type="password" placeholder="password" name="password" id="field-3" aria-invalid="true" class="chakra-input css-1c6j008" aria-describedby="field-3-feedback"> login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) <input type="password" placeholder="password" name="password" id="field-3" aria-invalid="true" class="chakra-input css-1c6j008" aria-describedby="field-3-feedback"> webpackHotDevClient.js:138 src/hooks/useAuth.js Line 39:13: Unexpected console statement no-console src/hooks/useAuthCheck.js Line 36:9: Unexpected console statement no-console src/hooks/useGetFavo.js Line 23:11: Unexpected console statement no-console src/hooks/useSignup.js Line 44:11: Unexpected console statement no-console Line 50:11: Unexpected console statement no-console Line 54:9: Unexpected console statement no-console printWarnings @ webpackHotDevClient.js:138 handleWarnings @ webpackHotDevClient.js:143 push../node_modules/react-dev-utils/webpackHotDevClient.js.connection.onmessage @ webpackHotDevClient.js:210
bottonの処理をconsole.logに変更した後のdevtook
回答1件
あなたの回答
tips
プレビュー