使用 react-apollo 自定义 InputTypes

Posted

技术标签:

【中文标题】使用 react-apollo 自定义 InputTypes【英文标题】:Custom InputTypes with react-apollo 【发布时间】:2018-03-19 05:55:33 【问题描述】:

我正在尝试在客户端执行需要自定义输入类型的突变查询。目前它看起来像这样:

import  graphql  from 'react-apollo';
...
const graphQuery = graphql(gql`
  input UserSignUpInput 
    firstName: String!,
    lastName: String!,
    email: String!,
    password: String!
  
  mutation userSignUp($input: UserSignUpInput!) 
    createUserByEmail(input: $input) 
      authToken
    
  `, 
  props: ( mutate ) => (
    signup: (firstName, lastName, email, password) =>
      mutate( variables:  input:  firstName, lastName, email, password   ),
  ),
);
...

但是,我收到了不允许在查询中定义输入类型的错误。我的问题是:如何定义这些复杂的输入类型?我似乎无法为ApolloClient..提供架构。

【问题讨论】:

【参考方案1】:

客户端端的正确语法是:

gql`
  mutation userSignUp($input: UserSignUpInput!) 
    createUserByEmail(input: $input) 
      authToken
    
  
`

由于您的输入 UserSignUpInput 是在服务器上定义的,所以一切正常。

服务器

input UserSignUpInput 
  firstName: String!,
  lastName: String!,
  email: String!,
  password: String!

【讨论】:

这个输入类型应该在哪里定义?在反应应用程序中,它抱怨语法! 如果使用 HotChocolate,如果您没有服务器,请务必将 Input 添加到客户端类型名称的末尾。例如,服务器类型为UserSignUp,客户端类型仍为UserSignUpInput,参见link

以上是关于使用 react-apollo 自定义 InputTypes的主要内容,如果未能解决你的问题,请参考以下文章

获取更多功能未定义用于 useLazyQuery react-apollo 钩子

ReactJS/Javascript/Graphql/React-apollo:无法读取未定义的属性“正在加载”

React Apollo 和 Redux:将自定义 reducer 与 Apollo 状态相结合

WrappedComponent 未定义

vue input标签隐藏使用label自定义样式

React Typescript 故事书使用 onChange callBack 然后 setState 值 backTo Input 实现自定义 Input 组件