我试图了解接力的工作原理。
1。)假设我有 UpdateProductMutation (FIELDS_CHANGE类型)更新单品的字段,即标题'描述'等我可以发送突变与那些字段的变化,它的工作原理。 (假设此处的产品为Banana
)
2。)现在,我将 ProductCategory 类型的 product_categories 字段添加到产品类型中。在 UpdateProductMutation 变种中,我发送" catIds"数组作为突变的附加输入字段。 (即catIds: {type: new GraphQLList(GraphQLID)}
)它还使用 product_categories 字段成功改变了产品。
3。)为了便于理解,我们假设Banana
产品有Fruit
和Yellow
类别。我已在步骤2中添加Healthy
。
4.。)问题是,如果我在步骤2之前查询了Healthy
页面并且Relay已经存储了缓存,请在步骤2之后再次访问Healthy
页面.snn&#39 ; t显示新关联的产品Banana
。
这是我的变异配置和胖查询。
getFatQuery() {
return Relay.QL`
fragment on UpdateProductPayload {
updatedProduct,
}
`;
}
getConfigs() {
console.warn('getConfigs', this.props);
return [{
type: 'FIELDS_CHANGE',
fieldIDs: {updatedProduct: this.props.id},
}];
}
我不确定我是否完全错了。似乎FIELDS_CHANGE在这里使用的类型不正确,因为突变工作正常,变异有效负载给出了更改的产品类别边缘。只有当我转到之前提供的相关产品类别页面并且没有在那里看到更新的产品时,才会出现此问题。 (中继甚至不再发送查询)。根据我的理解,RANGE_ADD或RANGE_DELETE也不允许您更改正常字段(即'标题','描述'等)同样在我的情况下,catIds数组可能导致RANGE_ADD或RANGE_DELETE,取决于页面上的选择。
有关我应该采取哪个方向的建议?