2017-10-26 5 views
0

ich eine Funktion mit diesem Code aufrufen,Destrukturierung und berechnet propery Namen zusammen arbeiten, es6

gqlActions('customer', 'Add', this.props, values); 

oder

gqlActions('customer', 'Update', this.props, values); 

diese funcions für Hinzufügen und Aktualisieren von Aktionen. Auf der Funktion I berechnete Eigenschaft verwenden, zum Beispiel in

const tableAction= `${table}${action}`; 
[tableAction]: valuesOptimistic, 

Es funktioniert ok, ist mein Problem, bevor in Destrukturierung, diese Variable nach zu verwenden:

update: (store, { data: { [tableAction] }}) => { 
    data.customers.push([tableAction]); 

es ist nicht gültig Syntax ... , bevor ich für hard 'Add' Aktion verwendet haben:

update: (store, { data: { customerAdd }}) => { 
    data.customers.push(customerAdd); 
}, 

oder

update: (store, { data: { customerUpdate }}) => { 
    data.customers.push(customerUpdate); 
}, 

becase I 'update' Eigenschaft senden für eine Bibliothek zu arbeiten, die mir den Wert accord auf [tableAction] sendet, dass ich in definiert haben:

optimisticResponse: { 
    [tableAction]: valuesOptimistic, 
} 

I Parameter bedeuten in Denormalisierung ist variabel (Update oder hinzufügen). Ich hoffe, dass es klar ist.

meine volle Funktion:

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

verwenden, können Sie ein Beispiel für Ein- und Ausgang geben? – Roman

Antwort

0

Sie benötigen destructuring using computed property names

update: (store, { data: { [tableAction]:action }}) => { 
      data.customers.push(action); 
     } 
+0

Ich kann TableAction nicht in optimisticResponse verwenden, ist ein komplexes Apollo-Client-System für Cache-Variablen und Objekte zu senden und zu bekommen – DDave

+0

'tableAction' ist eine Zeichenfolge richtig? Sie können es also als Schlüssel weitergeben. –

+0

Sie aktualisieren: [TableAction]: valuesOptimistic, ich denke, Ihre Antwort ist richtig, ich werde es testen – DDave

Verwandte Themen