reduxで状態が変わるとconnect
がmapStateToProps
であるコンポーネント小道具をすべて更新します。しかし、突然変異を実行するApolloでは、同じデータを使用しているすべてのコンポーネントが新しい小道具を受け取ります。Apolloで突然変異を行った後に別のコンポーネントを更新する方法
これは、データセットが同じであることをApolloが認識していないため、これが予想される動作であると私は理解しています。ここで私が得ているものの例です:編集コンポーネントはusername
を更新して
const query = gql`query { me { username } }`
@graphql(query)
class Header extends React.Component {
render() {
return <h1>{this.props.data.me.username}</h1>
}
}
const mutation = gql`mutation updateAccount($username: String!) {
updateAccount(username: $username) {
me {
username
}
}
}`
@graphql(mutation)
class Edit extends React.Component {
render() {
# ...
}
onSubmit(e) {
e.preventDefault()
this.props.mutate({variables: {username: this.state.username})
}
}
がHeader
コンポーネントはusername
、どこをレンダリングします。 username
が変更された場合は、Header
を再レンダリングします。私はどのようにクエリをポーリングせずにこれを行うか分からない。