2015-12-22 2 views
0

У меня есть компонент реакции, который загружает файлы асинхронно. После загрузки файлов их идентификатор с сервера хранится в скрытом поле и сохраняется как часть другой формы. Этот компонент отображается внутри формы, которая сохраняет идентификаторы. Я не могу использовать API файлов Javascript из-за поддержки IE.Перемещение элемента элемента DOM из компонента js-ответа

У меня есть эта функциональность, работающая в JQuery, но я пытаюсь ее преобразовать, чтобы реагировать. После выбора файла мне нужно переместить поле ввода файла в другую форму за пределами текущей формы, чтобы он мог быть загружен. Мой компонент реагирования содержит это поле ввода файла, а onChange я использую jQuery для его перемещения. После того, как я переместил его, я обновляю свое состояние, чтобы мой метод визуализации снова вызывался. Когда он вызывается, он не отображает поле ввода файла. Я ожидаю, что он увидит, что поле ввода файла не находится там, где метод визуализации помещает его и создает новый.

Я понимаю, что это, вероятно, не способ реагировать на любые действия - любой ввод или предложения были бы замечательными. Благодарю.

ответ

0

Реакция не собирается замечать, что кто-то еще модифицировал DOM. Когда вы вызываете setState, запускается еще один render. Результат рендеринга добавляется в виртуальную DOM и отличается от предыдущей виртуальной DOM. Настоящий DOM никогда не входит в уравнение.

Вы можете просто cloneinput[file] с jQuery, а не перемещать его.

+0

Я не верю, что клонирование скопирует значение, которое является файлом, который я хочу загрузить. – Brian

+0

В соответствии с этим ответом - http://stackoverflow.com/questions/23530716/react-how-much-can-i-manipulate-the-dom-react-has-rendered - Реакция действительно волнует. Я даже получил сообщение об ошибке. Однако я изменил свой подход и вместо того, чтобы клонировать поле и использовать клон для загрузки, я использую клон для замены поля в компоненте. Кажется, это работает. – Brian

+0

Вы можете вручную скопировать файл и поместить его в клонированный элемент; его больше работы, чем просто вызов 'clone()', но это очень удобно. О реакторе заботы, я имел в виду о реальном изменении DOM. Реакция не волновала, потому что считала, что обновление не нужно. В этом утверждении есть определенные нюансы. – Tyrsius

Смежные вопросы