私は投稿を作成し、それを投稿リストの前に追加するRelay突然変異を持っています。楽観的な更新は、突然変異がGraphQLサーバーに送信される前に、投稿のタイトルとURLの前にリストを追加します。私の問題は、突然変異が失敗した場合や完了できない場合、そのオプティミスティックアップデートが自動的にリストから削除されることです。失敗した突然変異を捕捉して処理する方法はありますか?そのため、ユーザーにポストを保存できないことを示す何らかのメッセージを表示できますか? commitUpdate
の呼び出し中に突然変異の失敗を処理するためのコールバックを提供し、あなたのPostForm
コンポーネントのhandleSubmit
機能でリレーで失敗した突然変異を捕捉して処理する方法は?
import React from 'react';
import Relay from 'react-relay';
import CreatePostMutation from '../../mutations/create_post';
class PostForm extends React.Component {
handleSubmit = (e) => {
e.preventDefault();
let {relay, store} = this.props;
let {title, url} = this.refs;
relay.commitUpdate(
new CreatePostMutation({
title: title.value,
url: url.value,
store
})
);
// clear values
title.value = '';
url.value = '';
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<input name="title" placeholder="Title" ref="title" />
<input name="url" placeholder="URL" ref="url" />
<input type="submit" />
</form>
</div>
)
}
}
export default PostForm;