1

我正在尝试通过 Formik 上传带有 React-dropzone 的图像。

当我发送这张图片时,我用它在 img html 上预览它,效果很好。

当我点击发送时,仅发送预览对象,其余信息消失...

在此处输入图像描述

我不知道是否适用于 formik,因为当我打印值时,它会为我提供正确的信息,但是当发送时,一切都会改变。

这是一个关于这个问题的视频,这是一个被删除的小例子,答案如下

请帮忙!

4

2 回答 2

1

这是你的Mutation类型:

type Mutation {
  uploadFile(file: Upload!): Boolean!
}

您的架构将文件定义为采用名为typeuploadFile的单个参数。这意味着参数是非空的,即空不能作为值传递给它。fileUpload!!

这是您的查询:

mutation UploadFileMutation($file: Upload) {
  uploadFile(file: $file)
}

您将变量 $file 传递给参数file,但您告诉 GraphQL 这个变量的类型是Upload,而不是Upload!。换句话说,你说那$file 可能是空的。根据规范,这会导致类型验证失败。

规格

变量用法必须与它们传递给的参数兼容。如果在完全不匹配的类型的上下文中使用变量,或者如果将变量中的可为空类型传递给非空参数类型,则会发生验证失败。

换句话说,如果字段是Upload!,则只能使用也定义为 的变量Upload!。如果该字段是类型Upload,则可以传入Upload!Upload

TLDR;将您的查询更改为:

mutation UploadFileMutation($file: Upload!) {
  uploadFile(file: $file)
}

或者,如果文件可能为空,请将您的字段类型更新为可为空。

于 2019-02-06T16:03:32.460 回答
0

您的变异操作和您的模式之间存在类型不匹配。

变异操作接受一个null值,但模式不接受;因此该操作无法通过验证步骤。

将此行更改为Upload!https ://github.com/MontoyaAndres/bug-upload/blob/master/client/src/App.js#L8

Upload或者,如果您希望文件可以为空,请将您的架构更改为。

于 2019-02-06T16:01:46.040 回答