跳至主要內容
版本:v18.0.0

commitMutation

commitMutation

命令式地執行一個變更 (mutation)。

另請參閱 useMutation API 和 資料更新指南

import type {FeedbackLikeMutation} from 'FeedbackLikeMutation.graphql';
const React = require('React');

const {graphql, commitMutation} = require('react-relay');

function likeFeedback(environment: IEnvironment): Disposable {
return commitMutation<FeedbackLikeMutation>(environment, {
mutation: graphql`
mutation FeedbackLikeMutation($input: FeedbackLikeData!) {
feedback_like(data: $input) {
feedback {
id
viewer_does_like
like_count
}
}
}
`,
variables: {
input: {
id: '123',
},
},
});
}

引數

型別 MutationConfig<TMutationConfig: MutationParameters>

  • 具有以下欄位的物件
    • cacheConfig[可選] CacheConfig
    • mutationGraphQLTaggedNode。使用 GraphQL 字面值指定的變更 (mutation)
    • onError[可選] (Error) => void。如果變更 (mutation) 導致錯誤,則執行可選的回呼函數。
    • onCompleted[可選] ($ElementType<TMutationConfig, 'response'>) => void。變更 (mutation) 完成時執行的可選回呼函數。
      • 傳遞給 onCompleted 的值是從 store 讀取的變更 (mutation) 片段,套用更新程式和宣告式變更 (mutation) 指令之後。這表示不會讀取未遮罩片段中的資料,且刪除的記錄(例如,透過 @deleteRecord 刪除)也可能為 null。
    • onUnsubscribe[可選] () => void。當取消訂閱變更 (mutation) 時執行的可選回呼函數,當返回的 Disposable 被處置時,就會發生取消訂閱。
    • optimisticResponse[可選] 物件,其型別與變更 (mutation) 的原始回應型別相符。如果您正在使用此欄位,請確保使用 @raw_response_type 修飾您的變更 (mutation)。
    • optimisticUpdater[可選] SelectorStoreUpdater。在 commitMutation 被呼叫時執行、將 optimisticResponse 正規化到 store 之後執行的回呼函數。
    • updater[可選] SelectorStoreUpdater。在收到 payload 時執行、將 payload 寫入 store 之後執行的回呼函數。
    • uploadables[可選] UploadableMap。可選的上傳映射。
    • variables$ElementType<TMutationConfig, 'variables'>。傳遞給變更 (mutation) 的變數。

型別 CacheConfig

  • 具有以下欄位的物件
    • force[可選] 布林值。如果為 true,則會無條件發出查詢,而不考慮任何已配置的回應快取狀態。
    • poll[可選] 數字。會造成查詢以指定的間隔(以毫秒為單位)輪詢來即時更新。(此值將傳遞給 setTimeout)。
    • liveConfigId[可選] 字串。會透過呼叫 GraphQLLiveQuery 造成查詢即時更新;它代表進行即時查詢時閘道的配置。
    • metadata[可選] 物件。使用者提供的中繼資料。
    • transactionId[可選] 字串。使用者提供的值,旨在用作執行操作的特定實例的唯一 ID。

型別 SelectorStoreUpdater

  • 簽名為 (store: RecordSourceSelectorProxy, data) => void 的函式
  • 此介面可讓您命令式地直接從 Relay store 寫入和讀取資料。這表示您可以完全控制如何更新 store 以回應訂閱 payload:您可以建立全新的記錄,或更新或刪除現有的記錄。用於讀取和寫入 Relay store 的完整 API 可在此處找到。

型別 UploadableMap

型別 MutationParameters

  • 具有以下欄位的物件
    • response:物件
    • variables:物件
    • rawResponse:可選的物件

返回值

  • Disposable,它
    • 如果在請求完成之前呼叫,將取消還原任何樂觀更新,並阻止執行 onCompleteonError 回呼函數。它不一定會取消任何網路請求。將導致呼叫 onUnsubscribe 回呼函數。
    • 如果在初始請求完成之後呼叫,則不會執行任何操作。

介面 Disposable

  • 具有以下鍵值的物件
    • dispose() => void。處置資源。