С избыточностью, когда состояние изменяется, он обновляет любые реквизиты компонентов, которые connect
ed, в хранилище с mapStateToProps
. Однако с Apollo при выполнении мутации любой компонент, использующий те же данные, получает новые реквизиты.
Я понимаю, что это ожидаемое поведение, потому что Apollo не знает, что наборы данных одинаковы. Вот пример того, к чему я клоню:
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
, тогда как компонент Edit обновляет username
. Я хочу перерендерить Header
при изменении username
. Я не уверен, как это сделать без опроса запроса.