Как показывает ошибка, компонент Mutation
ожидает пропуска children
, но вы его не предоставляете.И компоненты Query
, и Mutation
используют шаблон рендеринга реквизитов , что означает, что предоставленный вами children
должен фактически быть функцией, возвращающей компонент для рендеринга.
<Mutation
mutation={createTrackerMutation}
variables={{ trackerModelID, userId, access_token, token_type, expires_in, user_id }}>
{(mutate, result) => {
return (
<div>Your component here.</div>
)
}}
</Mutation>
Подробно о сигнатуре функции рендеринга реквизита можно найти здесь , но в целом ей передается функция mutate
в качестве первого параметра, а затем, для удобства, объект results
в качестве второгопараметр.Функция mutate
- это то, что вы вызываете для запуска мутации.
В отличие от компонента Query
, который будет запускать любой запрос, которому вы передаете его при монтировании, компонент Mutation
не будет запускать связанный GraphQL.запрос до mutate
вызывается.Это сделано намеренно, так как большинство мутаций обычно не требуется, пока не произойдет какое-либо действие пользователя.
Если вам нужно запустить мутацию, когда компонент смонтирован, компонент, которыйрендеринг внутри Mutation
компонента должен быть передан в mutate
как реквизит.Затем этот компонент может вызывать mutate
в своем методе componentDidMount
.Этот вопрос был задан ранее, и более подробный ответ можно найти здесь .