const { data} = проблема использования: я хочу, чтобы данные изначально были объектом

#javascript #reactjs #react-apollo #apollo-client #react-hook-form

#javascript #reactjs #реагировать-apollo #apollo-клиент #реакция-форма-крючок

Вопрос:

Я пытаюсь реализовать функцию входа в мое приложение react.

 import React, { useState, useEffect } from 'react'
import { useQuery, useLazyQuery, useMutation } from "@apollo/client"
import { useForm } from "react-hook-form"
import { LOGIN } from '../queries/queries'

const Login = () => {

   const [formValue, setFormValue] = useState({})
   const { loading, error, data } = useQuery(LOGIN, {
      variables: {
         email: formValue.email,
         password: formValue.password
      }
   })


   const { register, handleSubmit } = useForm()
   const onSubmit = (value) => {
      setFormValue(value)
   }



   if (loading) return <p>loading</p>


   return(
      <>
         <form onSubmit={handleSubmit(onSubmit)} >
            <input 
               type="text"
               name="email"
               placeholder="E-mail"
               ref={register}
            />
            <input 
               type="password"
               name="password"
               placeholder="Password"
               ref={register}
            />
            <button type="submit">
               Login
            </button>
         </form>
      </>
   )
}
  

console.log(data.user) Например, когда я кодирую, возникает ошибка, потому user что не определено.
Я знаю, что могу получить объект из data , если я кодирую переменные напрямую, но я хочу получить его после handleSubmit .

Я думаю, что если я смогу создать data объект изначально, ошибки не произойдет. Тогда есть ли какой-нибудь способ сделать это?

Ответ №1:

попробуйте «данные?.user» вместо «data.user» при обращении к этому атрибуту объекта вопросительный знак должен отключать ошибку, если объект не существует

обновление: вы также можете попробовать объявить данные как пустой объектный литерал: { загрузка, ошибка, данные = {} }