反応ネイティブプロジェクトでは、オブジェクトを作成してから、新しく作成したオブジェクトの詳細ページに画面をリダイレクトしていると、次のエラーが発生します。
未処理のプロミス拒否の可能性があります(ID:0):ネットワークエラー:ストアエラー:アプリケーションがIDのないオブジェクトを書き込もうとしましたが、ストアにはこのオブジェクトのXYZのIDがすでに含まれています。
データベースを見ると、アイテムが前のステップで適切に作成されていることがわかります。リストを介して同じ画面とアイテムに移動すると(作成とリダイレクトの後ではなく)正常に動作するようです。アポロストアが正しい状態を保つには、待機する必要がありますか、それとも何らかのタイミングを設定する必要がありますか?
標準のapolloクライアント@graphqlバインディング/ラッピングを使用しています
gql:
query getEvent($eventId: ID!) {
Event(id:$eventId) {
id
headline
photo
location
startTime
creator {
username
photo
}
}
}
`;
そして、これがコードスニペットです
@graphql(getEventGql,{
options: ({route}) => {
console.log('route params', route.params);
return {
variables: {
eventId: route.params.eventId,
}
}
},
})
@connect((state) => ({ user: state.user }))
export default class EventDetailScreen extends Component {
...
id
もcreator
フィールドに追加する必要があります。
query getEvent($eventId: ID!) {
Event(id:$eventId) {
id
headline
photo
location
startTime
creator {
id
username
photo
}
}
}
一般に、クエリのすべてのサブセレクションには必ずid
を追加してください。