Потому что при начальном рендере {Component}
оценивается как ноль. Как вы использовали деструктуризацию.
const { module: Component } = this.state;
так
Component = null
Но когда вы используете <Component/>
при начальном рендере, компонент <Component/>
отсутствует. Таким образом, использование { <Component />}
дает ошибку.
Использование Component
и <Component/>
отличается.
Я думаю, что трудность определяет, как пространство может быть восстановлено из исходных файлов.
Я думаю, что следующее могло бы работать:
Это все сразу полагается на редкую поддержку файла и пространство освобождения усечения файла.
Если бы Вы на самом деле хотели сделать это затем, то необходимо заняться расследованиями dd
команда. который может сделать шаг копирования
Кто-то в другом ответе дал аккуратное решение, которое не требует редких файлов, но действительно копирует file2 дважды:
Вы можете получать пространство путем сжатия целой файловой системы. Я полагаю, что NTFS поддерживает это, и я уверен, что существуют разновидности *, отклоняют файловые системы, которые поддерживали бы его. Это также обладало бы преимуществом после копирования файлов, Вы будете все еще иметь больше дискового пространства в запасе чем тогда, когда Вы запустили.
Хорошо, изменяя проблему немного. Возможности существует другой материал на диске, в котором Вы не нуждаетесь, но Вы не знаете то, что это или где это. Если бы Вы могли бы найти его, Вы могли бы удалить его, и затем возможно, у Вас было бы достаточно дополнительного пространства.
Найти эти "опухоли", использую ли несколько больших или много небольших, я немного программы выборки. При запуске с верхней части каталога (или корень) это делает две передачи. В передаче 1, это обходит дерево каталогов, сложение размеров всех файлов для получения в общей сложности N байтов. В передаче 2, это снова обходит дерево каталогов, притворяясь, что это читает каждый файл. Каждый раз, когда это передает байты N/20, это распечатывает путь к каталогу и название файла, который это "читает". Таким образом, конечным результатом являются 20 глубоких образцов путей, однородно распространенных по всем байтам в соответствии с каталогом.
Затем просто посмотрите на тот список для материала, который обнаруживается много, что Вы не нуждаетесь и идете, сдувают его.
(Это - эквивалентный пространству из метода выборки, который я использую для оптимизации производительности.)
Вы могли сделать это:
head file2 --bytes=1024 >> file1 && tail --bytes=+1024 file2 >file2
можно увеличиться 1024 согласно тому, сколько дополнительного дискового пространства Вы имеете, затем просто повторите это, пока все байты не были перемещены.
Это - вероятно, самый быстрый способ сделать это (с точки зрения времени разработки)
Я сомневаюсь, что это - прямой ответ на вопрос. Можно рассмотреть это как альтернативный способ решить проблему.
Я думаю, что возможно рассмотреть 2-й файл как часть 2 первого файла. Обычно в приложении zip, мы видели бы, что огромный файл разделяется на несколько частей. При открытии первой части приложение автоматически рассмотрело бы другие части в последующей обработке.
Мы можем моделировать то же самое здесь. Как @edg на которую указывают, несерьезная файловая система был бы один путь.
Две мысли:
Если у Вас есть достаточно физической RAM, Вы могли бы на самом деле считать второй файл полностью в память, удалить ее, затем записать, что она в добавляет режим в первый файл. Конечно, если Вы теряете питание после удаления, но прежде, чем завершить запись, Вы потеряли часть второго файла навсегда.
Временно уменьшите дисковое пространство, используемое функциональностью ОС (например, виртуальная память, "корзина" или подобный). Вероятно, только использования в Windows.
Не очень эффективный, но я думаю, что это может быть сделано.
Откройтесь первый файл в добавляют режим и копируют блоки от второго файла до него, пока диск не почти полон. Для остатка от второго файла скопируйте блоки с точки, где Вы остановили назад к началу файла через произвольный доступ ввод-вывод. Усеките файл после копирования последнего блока. Повторитесь, пока не закончено.
хорошо, для теоретических развлечений, и только если Вы обещаете не потратить впустую свое время, на самом деле делающее его:
Таким образом, можно связать файлы:
Это было бы оптимально эффективно: минимальные изменения, минимальное копирование, никакое пространство резервного диска не требуется.
теперь пойдите, покупают карту памяти ;-)
Рискуя тем, чтобы звучать легкомысленными, Вы рассмотрели возможность просто получения большего диска? Это, вероятно, было бы более быстро...
Вот небольшое улучшение по сравнению с моим первым ответом.
Если Вы имеете свободных 100 МБ, копируете последние 100 МБ из второго файла и создаете третий файл. Усеките второй файл, таким образом, это теперь на 100 МБ меньше. Повторите этот процесс, пока второй файл не был полностью разложен на блоки индивидуума 100MB.
Теперь каждый из тех файлов 100 МБ может быть добавлен в первый файл по одному.
С теми ограничениями я ожидаю, что необходимо было бы вмешаться в файловую систему; непосредственно отредактируйте блоки выделения и размер файла.
Другими словами, забудьте о перестановке любых блоков содержания файла вокруг, просто отредактируйте информацию о тех файлах.
время потратило выяснение умного решения, включающего перестановку сектора диска и цепочечное файлом управление: 2-4 часа
время, проведенное при получении/записи программного обеспечения, чтобы сделать оперативную копию и усеченный: 2-20 часов
уровень программиста медианы времен в размере $50/часов: $400-1 200
стоимость Карты памяти на 1 ТБ: $100-200
способность понять фразу "альтернативные издержки": бесценный
Очевидно, экономический ответ является покупкой больше устройства хранения данных, предполагающего, что это - возможный ответ. Это не могло бы быть, хотя - встроенная система без способа не присоединить больше устройства хранения данных, или даже никакой доступ к самому оборудованию - не говорит, космический зонд в полете.
Ранее представленный ответ на основе редкой файловой системы хорош (кроме деструктивного характера его, если что-то идет не так, как надо!), если у Вас есть редкая файловая система. Что, если Вы не делаете, хотя?
Запуск с конца файла 2 копирует блоки в запуск конечного файла, инвертирующего их, когда Вы идете. После каждого блока Вы усекаете исходный файл к нескопированной длине. Повторитесь для файла № 1.
В этой точке конечный файл содержит все данные назад, исходных файлов не стало.
Считайте блок из пирога и из конца конечного файла, инвертируйте их и запишите им в пятно другой, прибыл из. Проложите себе путь, внутрь зеркально отразив блоки.
Когда Вы сделаны, конечный файл является конкатенацией исходных файлов. Никакая редкая необходимая файловая система, никакое питание с необходимой файловой системой. Это может быть выполнено на уровне нулевых байтов, свободных, поскольку данные могут быть сохранены в памяти.
, если файл очень сжимаем (например, журналы):
gzip file1
gzip file2
zcat file1 file2 | gzip > file3
rm file1
rm file2
gunzip file3