У меня есть компонент, который выглядит ниже
class InitialPropsDetail extends React.Component<Props> {
static getInitialProps = async (ctx: any) => {
try {
const { data, error, loading } = await ctx.apolloClient.query({
query: GET_CURRENT_USER_QUERY,
})
const user = data.currentUser
return { user, errors: error, loading }
} catch (err) {
return { errors: err.message }
}
}
render() {
const { user, error } = this.props
if (error) {
return (
<Layout title={`Something went wrong...`}>
<p>
<span style={{ color: 'red' }}>Error:</span> {error}
</p>
</Layout>
)
}
return (
<Layout title={`${user ? user.name : ''} | Sav.to`}>
{user && <UserDetail user={user} />}
</Layout>
)
}
}
Я хочу, чтобы эта страница была SSR по причинам SEO. Поэтому я использую getInitialProps, чтобы отобразить его с некоторыми данными. Позже другое действие, которое обновляет некоторые из этих данных, и я выполняю Graphql refetchQuery для этого действия. Запрос запускается, и эти данные возвращаются. Однако представление не обновляется с новыми данными. Я попробовал то же самое в другом виде без getInitialProps
, и он работает нормально.
Как обновить данные, полученные с помощью getInitialProps
?