У меня есть компонент редактора профиля (родительский) и компонент обрезки (дочерний). Я хочу обновить базу данных двумя ожидающими друг друга асинхронными действиями. Это: 1.) отправка от родителя, у которого есть поля формы, и 2.) отправка из обрезки, у которого есть блоб изображения. На данный момент у меня есть родительский файл, дочерний файл и файл действий.
соответствующий фрагмент из родительского:
handleSubmit = e => {
e.preventDefault();
// Dispatches action to update database with form fields
this.props.accountSettingsUpdateProfile(this.state);
};
соответствующий фрагмент изребенок:
onClickSave = () => {
if (this.editor) {
this.editor.getImageScaledToCanvas().toBlob(blob => {
// Dispatches an action to upload database with new cropped image
this.props.uploadProfileImage(blob);
});
И в моем файле действий у меня есть что-то вроде:
export const accountSettingsUpdateProfile = settings => async () => {//etc}
export const uploadProfileImage = file=> async () => {//etc}
Я хотел бы иметь что-то вроде:
Родитель
handleSubmit = e => {
e.preventDefault();
// Dispatches action to update database with form fields
this.props.dispatchParentFieldsAndChildBlobToActions();
};
Действия
try {
//Both try update, if either error logged to console.
} catch (error) {
console.log(error)
}
Суть в том, что я не знаю, как объединить эти действия. Я могу добиться того, чего хочу, просто вырезав компонент кадрирования и вставив его в родительский элемент вместо того, чтобы иметь его как отдельный компонент, но это обман.