微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在react js中使用从useQuery获得的graphql枚举进行表单竞争?

如何解决如何在react js中使用从useQuery获得的graphql枚举进行表单竞争?

我正在使用 React,apollo graphql。我正在尝试使用自省查询通过 graphql 枚举在表单中添加医生的名称

我有一个代表医生名称的 graphql 枚举类型,我正在使用 useQuery显示它。我想要做的是使用从这个 useQuery 获得的枚举数据到表单中(在组件 AddDoctor 中)。但我总是收到空(数据未定义)错误未捕获的类型错误:无法读取空值的属性‘地图’”。

这是我的片段:

枚举类型

enum DesignationType{
 Podiatrist
 GeneralPractitioner
 Pediatrician
 Endocrinologist
}

addGQL.js

export const ADD_DOCTOR_MUTATION = gql`
  mutation addDoctors($name: String!,$designation:DesignationType! ) {
    addDoctors(
        name: $name,designation: $designation
    ) {
        _id
        name
        designation
        
    }
  }
`

AddDoctor.js

const AddDoctor = () => {
const DESIGNATION_QUERY = gql`
    query GetEnum {
        __type(name: "DesignationType") {
            enumValues {
                name
            }
        }
    }
`
const {  data,loading } = useQuery(DESIGNATION_QUERY);
const enumValues = loading ? null : data.__type.enumValues;


const [formState,setFormState] = useState({
    name: '',designation: ''
    
});

const [addDoctors] = useMutation(ADD_DOCTOR_MUTATION,{
    variables:{
        name: formState.name,designation: enumValues       
    }
});
   
return (
    <form 
        onSubmit = {async (e)=>{
            e.preventDefault();
            await addDoctors();

        }}>
       <div> 
        <label> Name: </label>
        <input type ='text' 
               value = {formState.name} 
               onChange={(e)=>
                setFormState({
                    ...formState,name: e.target.value
                })
               }
               placeholder = 'name'/>
       </div>
             
       

       <div> 
        <label>Designation: </label>            
        <select>
            {enumValues.map(enumValue => (
                <option value={enumValue.name}>{enumValue.name}</option>
            ))}   
        </select>
              
       </div>

        <button type = "submit">Add Doctor</button>
    </form>
    
)

}

我也尝试在此链接 How do I chain useQuery and useMutation in GraphQL properly? 中使用 useEffect,但我不知道如何正确使用 useEffect。 任何人都可以让我知道,我如何使用要在表单中使用的枚举值添加名称?提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。