Предварительный просмотр и повторная загрузка файла с использованием gcanti/tcomb-формы

Я следовал примеру загрузки файла, и теперь я могу загрузить этот файл на s3. но когда дело доходит до редактирования или замены этого файла, как я должен справиться с этим.

const CustomFile = t.irreducible('File', x => x instanceof File);

// MyModel
const BusinessModel = t.struct({
  logo: t.maybe(CustomFile),
  name: t.String,
}, 'BusinessModel');

// options
const options = {
  fields: {
    logo: {
      type: 'file'
    }
  }
};

Мой объект ответа

{
  "name": "business name",
  "logo": {
    "url": "https://some.url.to/s3/logo.png",
    "large": {
      "url": "https://some.url.to/s3/logo_large.png"
    }
  }
}

Так как мне получить ответ logo чтобы вписаться в BusinessModel такой, что он показывает предварительный просмотр, если файл существует.

onChange показывает предварительный просмотр нового файла

onSubmit загружает новый выбранный файл

это то, что я должен рассмотреть

1 ответ

class MyFileComponent extends t.form.Component { 
  getTemplate() {
    return (locals) => {
      return (
        <div className="form-group">
          {
            getLabel({
              label: locals.label,
            })
          }
          <div>
          { this.renderPreview(locals) }
            <label lang="en" className="custom-file ml-3">
              <input type="file" className="custom-file-input" accept="image/*" onChange={evt => locals.onChange(evt.target.files[0])} />
              <span className="custom-file-control"></span>
            </label>
          </div>
          { getError(locals) }
          { getHelp(locals) }
        </div>
      );
    };
  }

  renderPreview(locals) {
    // your code
  }
}

Это то, что я сделал, я еще не обработал подсвечивание ошибок, но это работает, конечно, для загрузки одного файла.

Другие вопросы по тегам