2017-07-24 12 views
2

Ich benutze react-relay/compat 1.1.0 und ich muss eine Mutation schreiben mit der Fähigkeit, eine Datei hochladen. In Relay Klassik können Sie getFiles() verwenden Datei-Uploads in Mutationen zu unterstützen:Wie Dateiuploads mit Relay Modern Mutationen zu tun?

class AddImageMutation extends Relay.Mutation { 
    getMutation() { 
    return Relay.QL`mutation{ introduceImage }`; 
    } 

    getFiles() { 
    return { 
     file: this.props.file, 
    }; 
    } 
    ... 
} 

Aber haben keine Spur von Funktionalität zum Hochladen von Dateien in Relay Modern docs gefunden:

const {commitMutation} = require('react-relay'); 

commitMutation(
    environment: Environment, 
    config: { 
    mutation: GraphQLTaggedNode, 
    variables: Variables, 
    onCompleted?: ?(response: ?Object) => void, 
    onError?: ?(error: Error) => void, 
    optimisticResponse?: ?() => Object, 
    optimisticUpdater?: ?(store: RecordSourceSelectorProxy) => void, 
    updater?: ?(store: RecordSourceSelectorProxy) => void, 
    configs?: Array<RelayMutationConfig>, 

    // files: ... ? 
    }, 
); 

Ist das unterstützt noch in Relais modern? und wenn ja, wie geht das? Vielen Dank.

Antwort

1

Diese Frage gefunden, da ich gerade die selbe selbst hatte.

Nicht sicher von der vollständigen Antwort noch, aber ich fange an, durch die Relaisquelle zu lesen und basierend auf Pakete/Relais-Laufzeit/Mutationen/commitRelayModernMutation.js sieht es aus wie Sie uploadables zu Ihrer Mutation übergeben können.

2

Sie haben für commitMutation die Dateien als Objekt uploadables im config Objekt zur Verfügung zu stellen und dann den eigentlichen Upload in Ihrem Network Layer zu implementieren, da die Anforderung holen, um den Server eine mehrteiliger Form sein und nicht application/json.

Ein vollständiges Beispiel finden Sie unter https://github.com/facebook/relay/issues/1844#issuecomment-316893590.

Verwandte Themen