如何解决如何在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 举报,一经查实,本站将立刻删除。