gpt4 book ai didi

relayjs - 突变未结合 RANGE_ADD 获取胖查询指定的数据?

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

我正在尝试理解RANGE_ADD。我已经为 RANGE_ADD 提供了突变配置以及所有必需的信息。我使用 viewer 命名约定,将我的连接嵌套在 viewer 中。下面是我完整的中继突变的样子...

import Relay from "react-relay";

export default class CreateTeamMutation extends Relay.Mutation {
static fragments = {
viewer: () => Relay.QL`
fragment on Viewer {
id
}
`
}

getMutation() {
return Relay.QL`
mutation { createTeam }
`;
}

getVariables() {
return {
name: this.props.name
};
}

getFatQuery() {
return Relay.QL`
fragment on CreateTeamPayload {
edge,
viewer {
teams
}
}
`;
}

getConfigs() {
console.log(this.props.viewer);
return [{
type: "RANGE_ADD",
edgeName: "edge",
parentID: this.props.viewer.id,
parentName: "viewer",
connectionName: "teams",
rangeBehaviors: {
"": "append"
}
}];
}
};

我为 viewer id 提供了一个片段,在运行时,在 getConfigs 中,我可以看到它的存在。

在 GraphQL Mutation 响应负载 CreateTeamPayload 中,提供了 viewer 字段,以便 Relay 可以利用 RANGE_ADD< 的突变配置中的连接。此外,在 CreateTeamPayload 中,新边缘作为 edge 提供。

这三位信息(父级的查看者 ID、连接信息和边缘)似乎就是 RANGE_ADD 所需要的。我还确保通过 fat 查询从服务器请求此数据,以便 Relay 可以访问它以进行突变配置。

不过,Relay 似乎没有包含我在胖查询中指定的内容,以及突变配置所需的内容,以及它分派(dispatch)到服务器的内容。 Relay 请求的只是 clientMutationId。这是 Relay 发出的请求...

{
"query": "mutation CreateTeamMutation($input_0:CreateTeamInput!){createTeam(input:$input_0){clientMutationId}}",
"variables": {
"input_0": {
"name": "foo bar",
"clientMutationId": "0"
}
}
}

并且,以链式 react 方式,这会导致 Relay 抛出错误,该 Relay 正在等待突变配置的 vieweredge ......

Warning: writeRelayUpdatePayload(): Expected response payload to include the newly created edge `edge` and its `node` field. Did you forget to update the `RANGE_ADD` mutation config?

如果 Relay 包含了这些必填字段,那么它们完全可以存在。 RANGE_ADD 是否必须与 REQUIRED_CHILDREN 一起使用才能正常工作?突变传递到服务器,并在服务器上创建记录,只是客户端突变配置无法将更改的数据合并到存储中。

最佳答案

这可能是一个不明确的警告:https://github.com/facebook/relay/issues/542

中继将范围行为与之前获取的连接相交。

您此处的范围行为仅定义当团队连接不受任何调用影响时要执行的操作。您如何在应用程序中调用您的团队连接?

例如,如果您的应用获取 teams(order_by: 'recent'),您应该定义一个范围行为,例如 'orderby(recent)': 'append'

关于relayjs - 突变未结合 RANGE_ADD 获取胖查询指定的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601653/

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