我用这段代码调用一个函数,
gqlActions('customer', 'Add', this.props, values);
或
gqlActions('customer', 'Update', this.props, values);
此功能用于添加和更新操作。 在函数上我使用了计算属性,例如在
中const tableAction= `${table}${action}`;
[tableAction]: valuesOptimistic,
它工作正常,我的问题是在解构之前,之后使用该变量:
update: (store, { data: { [tableAction] }}) => {
data.customers.push([tableAction]);
它不是有效的语法...,在我使用硬编码之前添加'行动:
update: (store, { data: { customerAdd }}) => {
data.customers.push(customerAdd);
},
或
update: (store, { data: { customerUpdate }}) => {
data.customers.push(customerUpdate);
},
因为我发送了更新'属于图书馆的属性,它向我发送了与我在以下位置定义的[tableAction]相关的值:
optimisticResponse: {
[tableAction]: valuesOptimistic,
}
我的意思是非规范化中的参数是可变的(更新或添加)。我希望能够清楚。
我的全部功能:
export const gqlActions = (table, action, props, values) => {
const valuesOptimistic = {
...Object.assign({}, values, __typename: table'})
};
const tableAction= `${table}${action}`;
props.mutate(
{
variables: values,
optimisticResponse: {
[tableAction]: valuesOptimistic,
},
update: (store, { data: { [tableAction] }}) => {
data.customers.push([tableAction]);
},
},
)
}
}
答案 0 :(得分:0)
您需要使用destructuring using computed property names
update: (store, { data: { [tableAction]:action }}) => {
data.customers.push(action);
}