@smoovil

Почему возникает ошибка с react.query?

Хочу сделать компоненту в которой происходит авторизация с помощью react.query, но выходит ошибка
index.js:
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { QueryClientProvider, QueryClient } from 'react-query';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <QueryClientProvider client={QueryClient}>
    <App />
    </QueryClientProvider>
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();


vhod:
import axios from "axios";
import React, {useState} from "react";
import { useForm } from 'react-hook-form';
import { NavLink } from "react-router-dom";
import {useMutation} from "react-query"
const API_URL = "{host}"
const Vhod = () => {
    const [user, setUser] = useState(null);
    const [login, setLogin] = useState("");
    const [password, setPasswrod] = useState("");
    const {mutate, isLoading} = useMutation(
        'login',
        () =>
        axios.post(
            `${API_URL}/auth`,
            {login, password},
            {
                headers: {'Content-Type':
            "application/json"}
            }
        ),
        {
            onSuccess: ({ data }) => {
                setUser(data.user)
            }
        }
       
    )
  const {
    register,
    formState: {errors, isValid},
    handleSubmit,
    reset,
  } = useForm()
  
  const onSubmit = (data) => {
    reset()
      console.log(data)
      axios.post("https://jsonplaceholder.typicode.com/posts", {
"userId": 2,
"id": 234,
"title": data.firstName,
          "body": data.password,
      })
  }
    return (
        <>
        {!user ? (
                <div>
                    <form onSubmit={handleSubmit(onSubmit)} >
                        <div>
                            <div >{errors?.firstName && <p>{errors?.firstName?.message || "error"}</p>}</div>
                            <label htmlFor="login">Login</label>

                            <input onChange={e => setLogin(e.target.value)} value={login} name="login" {...register("firstName",
                                {
                                    required: "Введите имя"
                                })} type="text" placeholder="Имя" className="name" />
                        </div>

                        <div>
                            <div >{errors?.password && <p>{errors?.password?.message || "error"}</p>} </div>
                            <label htmlFor="password">Password</label>
                            <input onChange={e => setPasswrod(e.target.value)} value={password} name="passwrod"
                                {...register("password",
                                    {
                                        required: "Введите пароль",
                                        minLength: {
                                            value: 5,
                                            message: "мин 5 символов"
                                        }
                                    })} type="passwrod" placeholder="Пароль" className="password" />
                        </div>
                        <input type="submit" onClick={(mutate())} disabled={!isLoading} />
                    </form>
                </div>
        ) : (
                    <div>
                        <p>Вы авторизованы</p>
                        <NavLink to={"/test"}>Перейти</NavLink>
                    </div>
        ) }
        
        </>
    )
}

export default Vhod;


65e1f9a0374da663171966.png
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 мая 2024, в 22:58
3000 руб./за проект
18 мая 2024, в 21:07
5000 руб./за проект
18 мая 2024, в 20:58
5000 руб./за проект