未处理的拒绝(错误):帖子不能为空

Posted

技术标签:

【中文标题】未处理的拒绝(错误):帖子不能为空【英文标题】:Unhandled Rejection (Error): Post must not be empty 【发布时间】:2021-03-26 07:13:37 【问题描述】:

我正在使用 useMutation 错误处理方法处理错误,但是在我尝试通过发布一个空帖子来测试错误处理后,它会在 UI 中显示错误,然后在应用程序中断后立即出现上述错误。

const [createPost,  error ] = useMutation(CREATE_POST_MUTATION, 
variables: values,
update(proxy, result) 
  const data = proxy.readQuery(
    query: FETCH_POSTS_QUERY,
  );

  let newData = [...data.getPosts];
  newData = [result.data.createPost, ...newData];
  proxy.writeQuery(
    query: FETCH_POSTS_QUERY,
    data: 
      ...data,
      getPosts: 
        newData,
      ,
    ,
  );
  values.body = '';

);

''

error && (
    <div className="ui error message" style= marginBottom: 20 >
      <ul className="list">
        <li>error.graphQLErrors[0].message</li>
      </ul>
    </div>
  )

【问题讨论】:

console.log 发送到服务器的数据 @OrAssayag 它发送空字符串,这是发送空的帖子正文,但服务器返回我在前端显示的错误,但由于某种原因仍然抛出错误 【参考方案1】:

或者另一种方法是您可以禁用不会导致错误的按钮。除非正文中有文本,否则按钮不会处于活动状态。如果只有空格,它将不会被激活。

<Button disabled=!values.body.trim() type="Submit" color="teal">
  Submit
</Button>

【讨论】:

【参考方案2】:

我在这里找到了我的解决方案 Handling errors with react-apollo useMutation hook

注意:虽然您可以使用暴露的错误状态来更新您的 UI,但这样做并不能替代实际处理错误。您必须提供 onError 回调或捕获错误以避免有关未处理的 Promise 拒绝的警告。

【讨论】:

以上是关于未处理的拒绝(错误):帖子不能为空的主要内容,如果未能解决你的问题,请参考以下文章

在使用 React Native 的 IOS 运行时出现“未处理的 JS 异常:本机模块不能为空”错误

未处理的拒绝(错误):GraphQL 错误:未经过身份验证

未处理的拒绝(错误)reducer 返回未定义

反应本机中未处理的承诺拒绝错误?

sh 未处理的拒绝错误:EACCES:权限被拒绝

未处理的拒绝(错误):网络错误:无法获取