未处理的拒绝(错误):帖子不能为空
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 拒绝的警告。
【讨论】:
以上是关于未处理的拒绝(错误):帖子不能为空的主要内容,如果未能解决你的问题,请参考以下文章