gpt4 book ai didi

javascript - 如何从突变中获取新对象的 ID?

转载 作者:可可西里 更新时间:2023-11-01 02:33:36 25 4
gpt4 key购买 nike

我有一个返回新对象 ID 的 createObject 突变。

返回后,我想重定向到有关新对象的详细信息页面。

如何使用 react /中继从包含组件中的突变中获取响应字段?

例如我的 createObject 页面包含带有如下代码的突变:

var onFailure = (transaction) => {

};

var onSuccess = () => {
redirectTo('/thing/${newthing.id}'); // how can I get this ID?
};

// To perform a mutation, pass an instance of one to `Relay.Store.update`
Relay.Store.update(new AddThingMutation({
userId: this.props.userId,
title: this.refs.title.value,
}), { onFailure, onSuccess });
}

newthing 应该是mutation创建的对象,但是怎么才能拿到呢?

最佳答案

通常我们会使用 RANGE_ADD 配置突变的客户端,并从突变的服务器端返回一个新的 thingEdge,但在这里你没有客户端上要添加新节点的范围。要告诉 Relay 获取任意字段,请使用 REQUIRED_CHILDREN 配置。

服务器端突变

var AddThingMutation = mutationWithClientMutationId({
/* ... */
outputFields: {
newThingId: {
type: GraphQLID,
// First argument: post-mutation 'payload'
resolve: ({thing}) => thing.id,
},
},
mutateAndGetPayload: ({userId, title}) => {
var thing = createThing(userId, title);
// Return the 'payload' here
return {thing};
},
/* ... */
});

客户端突变

class AddThingMutation extends Relay.Mutation {
/* ... */
getConfigs() {
return [{
type: 'REQUIRED_CHILDREN',
// Forces these fragments to be included in the query
children: [Relay.QL`
fragment on AddThingPayload {
newThingId
}
`],
}];
}
/* ... */
}

示例用法

var onFailure = (transaction) => {
// ...
};

var onSuccess = (response) => {
var {newThingId} = response.addThing;
redirectTo(`/thing/${newThingId}`);
};

Relay.Store.update(
new AddThingMutation({
title: this.refs.title.value,
userId: this.props.userId,
}),
{onSuccess, onFailure}
);

请注意,您使用此技术查询的任何字段都将可用于 onSuccess 回调,但不会添加到客户端存储中。 p>

关于javascript - 如何从突变中获取新对象的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32539189/

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