削除変異を送信した後、React + Apolloでストアを更新することに問題があります。私は、apollo +反応を組み込んだreactQLボイラープレートとexpress graphQLサーバーを使用しています(私はapolloサーバーをインストールしませんでした - 私はちょうどリファレンスexpress-graphQLパッケージを使用しています)。私のデータは_id
のmongoDBに格納されていますが、クライアント側の実際のデータにはidとしてid
が使用されています。DataIdFromObjectを使用したApolloの正規化が更新されない
アポロクライアントは、次のように定義されています
new ApolloClient(
Object.assign(
{
reduxRootSelector: state => state.apollo,
dataIdFromObject: o => o.id
},
opt
)
);
私は「SRC/graphql /クエリ/ courses.gql
@graphql(courses)
export default class CoursesPage extends Component {
constructor(props){
super(props)
this.handleDelete = this.handleDelete.bind(this);
}
handleDelete(event) {
this.props.mutate({ variables: {id: selectedId}}
.catch(err => console.log(err))
}
render() {
return (
{ this.props.data.courses.map(course =>
<CourseDelete selectedId={course.id} key={course.id} />
})
}
)
}
}
と子から 輸入のコースを使用して親コンポーネントを持っていますコンポーネントは、次のようになります。
import deleteCoursefrom 'src/graphql/mutations/deleteCourse.gql
@graphql(deleteCourse)
export default class CourseDelete extends Component {
constructor(props){
super(props)
this.handleDelete = this.handleDelete.bind(this);
}
handleDelete(event) {
this.props.mutate({ variables: {id: this.props.selectedId}}
.catch(err => console.log(err))
}
render() {
return (
<button onClick={this.handleDelete}>Button</button>
)
}
}
ここで、deleteCourse.gql:
mutation deleteCourse($id: String!) {
deleteCourse(id: $id) {
id
}
}
、私の元のクエリはcourses.gqlである:
は
query courses {
courses {
id
}
}
本当にありがとうございました、私は徹底的にあなたのビデオを楽しんで、私は実際にちょうどに見始めていましたこれは完璧なタイミングです! – coherence