gpt4 book ai didi

javascript - 如何处理react-apollo中的删除

转载 作者:行者123 更新时间:2023-12-03 02:45:45 26 4
gpt4 key购买 nike

我有一个突变

mutation deleteRecord($id: ID) {
deleteRecord(id: $id) {
id
}
}

在另一个位置我有一个元素列表。

我可以从服务器返回更好的东西吗?我应该如何更新列表?

更一般地说,在 apollo/graphql 中处理删除的最佳实践是什么?

最佳答案

我不确定这是良好的实践风格,但以下是我如何使用 updateQueries 处理react-apollo 中的项目删除:

import { graphql, compose } from 'react-apollo';
import gql from 'graphql-tag';
import update from 'react-addons-update';
import _ from 'underscore';


const SceneCollectionsQuery = gql `
query SceneCollections {
myScenes: selectedScenes (excludeOwner: false, first: 24) {
edges {
node {
...SceneCollectionScene
}
}
}
}`;


const DeleteSceneMutation = gql `
mutation DeleteScene($sceneId: String!) {
deleteScene(sceneId: $sceneId) {
ok
scene {
id
active
}
}
}`;

const SceneModifierWithStateAndData = compose(
...,
graphql(DeleteSceneMutation, {
props: ({ mutate }) => ({
deleteScene: (sceneId) => mutate({
variables: { sceneId },
updateQueries: {
SceneCollections: (prev, { mutationResult }) => {
const myScenesList = prev.myScenes.edges.map((item) => item.node);
const deleteIndex = _.findIndex(myScenesList, (item) => item.id === sceneId);
if (deleteIndex < 0) {
return prev;
}
return update(prev, {
myScenes: {
edges: {
$splice: [[deleteIndex, 1]]
}
}
});
}
}
})
})
})
)(SceneModifierWithState);

关于javascript - 如何处理react-apollo中的删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40484900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com