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