如何同时调用多个突变?
How to call multiple mutations at the same time?
我有一个 ID 数组,我创建了一个允许我仅使用 1 个 ID 删除项目的变更。
有没有办法使用 Relay.Store.commitUpdate
或 this.props.relay.commitUpdate
多次调用此突变?
我认为你可以将每个 Relay.Store.commitUpdate 包装在 Promise 中:
commitMutationPromise = (Mutation, data) =>
new Promise((resolve, reject) => {
Relay.Store.commitUpdate(new Mutation(data), {
onSuccess: (transaction) => {
resolve(transaction);
},
onFailure: (transaction) => {
reject(transaction);
},
});
}
并将您的突变作为承诺数组提交并使用 Promise.all 捕获结果(但请记住它的快速失败行为)。
可能是这样的:
handleDelete = (deleteIds) => {
const deletePromisesArray = [];
deleteIds.forEach(id => {
deletePromisesArray.push(
this.commitMutationPromise(DeleteMutation, { id })
);
});
Promise.all(deletePromisesArray).then(values => {
this.onSuccessDelete(result);
}, error => {
this.onFailDelete(error);
});
}
我有一个 ID 数组,我创建了一个允许我仅使用 1 个 ID 删除项目的变更。
有没有办法使用 Relay.Store.commitUpdate
或 this.props.relay.commitUpdate
多次调用此突变?
我认为你可以将每个 Relay.Store.commitUpdate 包装在 Promise 中:
commitMutationPromise = (Mutation, data) =>
new Promise((resolve, reject) => {
Relay.Store.commitUpdate(new Mutation(data), {
onSuccess: (transaction) => {
resolve(transaction);
},
onFailure: (transaction) => {
reject(transaction);
},
});
}
并将您的突变作为承诺数组提交并使用 Promise.all 捕获结果(但请记住它的快速失败行为)。 可能是这样的:
handleDelete = (deleteIds) => {
const deletePromisesArray = [];
deleteIds.forEach(id => {
deletePromisesArray.push(
this.commitMutationPromise(DeleteMutation, { id })
);
});
Promise.all(deletePromisesArray).then(values => {
this.onSuccessDelete(result);
}, error => {
this.onFailDelete(error);
});
}