#react-native #relayjs
#react-native #relayjs
Вопрос:
Мне нужно загрузить несколько файлов из приложения react native с мутацией relayjs. Массив файлов выглядит следующим образом:
[
{uri: 'file:///path/to/file.jpg', mime: 'image/jpg'},
{uri: 'file:///path/to/file2.jpg', mime: 'image/jpg'},
]
Я нашел функцию GetFiles () для мутаций, но я не понимаю, какой формат данных она должна возвращать?
Комментарии:
1. GetFiles получает объект {‘file1’: file1, ‘file2’: file2}, где file1 имеет тип файла. проверьте документы Relay: facebook.github.io/relay/docs /…
2. Какой тип файла в react-native?
3. developer.mozilla.org/en-US/docs/Web/API/File
4. я думаю, вам нужно получить файл из uri. Я углублюсь в это в ближайшие дни
5. Кто-то решил проблему?
Ответ №1:
Вот как я это решил:
Я использовал этот пакет https://github.com/jeanpan/react-native-camera-roll-picker чтобы получить изображение с фотопленки:
Вы можете использовать его для тестирования, добавьте это в свой рендеринг:
<CameraRollPicker
callback={this.getSelectedImage}
imagesPerRow={4}
imageMargin={1}
maximum={1}
/>
Это моя реализация getSelectedImage, я просто отправляю одно изображение, но вы можете отправлять несколько изображений, files — это объект, значением которого является изображение.
getSelectedImage = (images) => {
const image = images[0];
const files = {
[image.filename]: {
uri: image.uri,
name: image.filename,
},
};
const mutation = new UploadUserProfileMutation({
files,
});
this.props.relay.commitUpdate(mutation, callbacks);
};
в вашей мутации добавьте метод getFiles
:
export default class UploadUserProfileMutation extends Relay.Mutation {
...
getFiles() {
return this.props.files;
}
...
}
Вы должны завершить мутацию как обычную мутацию
Комментарии:
1. Хорошо, мой
getFiles()
выглядит такgetFiles() { return { files: this.props.photo }; }
, где this.props.photo ={ photo0:{ uri:'file:///storage/emulated/0/DCIM/Camera/IMG_20161015_054936.jpg', name: 'IMG_20161015_054936.jpg' } }
и у меня ошибка «TypeError: сбой сетевого запроса», и мой сервер не видит никаких запросов. Но когда я удаляю функцию GetFiles из своей мутации, все работает нормально. Что я делаю не так?(2. вам нужно настроить мультер на вашем сервере для приема файлов