Comments 23
Тоже столкнулся с такой проблемой. Мне особенно нравится в 16-й версии, что в качестве рендера можно вернуть массив. Но не тут-то было. Одна из часто используемых библиотек, а именно react-bootstrap, не работает (не работала; сейчас не знаю) с новой версией React'a (проблема всплывает при использовании модальных окон)… Поэтому приходится пока что сидеть на последней 15-й версии.
Отсутствие инкапсуляции и огромный размер либы привели к тому, что нельзя постепенно переходить на новый рендерер. Обновил рендерер — изволь сразу же поправить всю свою кодовую базу и все сторонние библиотеки, иначе не взлетит. Детский сад.
Все как раз-таки наоборот. Собственно смена движка рендера ничего не ломает. Но в новом релизе разработчики поменяли некоторые API методы, удалили те, что были явно задепрекейчены полгода назад. Для мажорного релиза это нормально.
Вы не правы, там проблемы только у тех, кто изначально использовал реакт неправильно или недокументированные методы, просто в 16 версии гайки подзакрутили и где он раньше просто предупреждал, теперь начал ругаться и падать, ну и вся какое старьё выпилили.
Всё это было известно с релиза v15, который состоялся в апреле 2016, а сейчас конец 2017.
Ещё раз: проблема не в отсутствии обратной совместимости, что нормально для мажорной версии (16 раз за 4 года уже ломали апи или просто так счётчик накручивали?). Проблема в невозможности постепенного переезда. "Не правильные" и "недокументированные" методы использовались ведь не просто так, а решали конкретные задачи, которые без них, "правильными" и "документированными" методами было не решить. Те же "порталы", например.
Ну а аргумент "мы вам пол года кидали варнинги — почему вы до сих пор не обновили код сторонних библиотек?!?" — вообще мимо кассы.
WAT? Похоже вы даже не в курсе о принципах версионирования реакта, ну да ладно. Во-первых, 16 реакт полностью совместим с 15, скорей всего и ниже, если вы правильно работали со state
, не использовали приватных методов или недокументированных функций. Всё что описано в статье можно было не делать, а просто зашимить, вот и весь перезд, тут же человек наконец-то решил привести кодовую базу в порядок. Во-вторых 16 реакт это не просто новый рендер, это абсолютно новый реакт, но как я уже написал, совместимый с предыдущими версиями.
"Не правильные" и "недокументированные" методы использовались ведь не просто так, а решали конкретные задачи, которые без них, "правильными" и "документированными" методами было не решить.
Вот это детский сад, всегда есть выход, отличный от "за залезу я в кишки" и те же порталы легко реализовывались через простенький HOC.
Наверно вы опять сейчас напишете, что вот «у меня в $mol такой проблемы нет»… конечно нет, его же никто не использует, да и версионирования нет.
16 реакт это отличный пример, как полностью переписать огроменную либу, которую использую по всему миру и ничего не сломать, да не просто не сломать, а сделать лучше и даже меньше по размеру. Молодцы они.
16 реакт полностью совместим с 15
Некоторые (в том числе "документированные") апи выпилили, некоторые даже шимов никаких не имеют (что-то там про профайлинг) — это называется "полностью совместим" в современном мире?
те же порталы легко реализовывались через простенький HOC.
Приведите код.
«у меня в $mol такой проблемы нет»… конечно нет, его же никто не использует, да и версионирования нет.
Всё проще — мы не ломаем апи. Хочешь сломать апи — пили новую либу, а не прикидывайся той же самой. Это позволяет иметь в проекте одновременно несколько версий одного модуля и постепенно переползать с одной на другую.
16 реакт это отличный пример, как полностью переписать огроменную либу
А preact — отличный пример, как переписать огроменную любу в миниатюрную либу. Как мне плавно мигрировать проект с React на Preact или наоборот?
Когда недавно пытался гуглить что-то по jquery, даже на английском языке, находились ответы, где советовали использовать $('.class').bind(), хотя казалось бы, 2017 на дворе.
У нас в магазинах до сих пор лежат бумажные книжки, где описывается как сделать border-radius с помощью версткой таблицами и гифками =)
А вот если открыть новость к релизу react 15 и вдучиво почитать, но мы не увидим ничего про deprecated createClass.
А если открыть новость к релизу 15.5, то там об этом написано.
Также начиная с 15.5 появились и ворнинги при обращении к React.createClass. Как этого можно было их не заметить — я не понимаю. Разве что если сидеть на версии 15.0, а потом внезапно перепрыгнуть на 16, пропустив все предыдущие.
Повторюсь, для мелких проектов, которые используют полтора инвалида, это может быть нормально. Но для таких крупных, как React это недопустимое(imho) поведение. Использование больших фреймворков в проектах отличается сильной интертностью. Полгода — это вообще не срок для deprecated функциональности.
Новый проект начал на create-react-app 16. Настроил proxy, как в было 15 — не работает.
Погуглил и с особым цинизмом прописал в \node_modules\webpack-dev-server\lib>Server.js
прямо в коде:
options.proxy = {
"/upload": { target: «127.0.0.1:8081», secure: false },
"/download/": { target: «127.0.0.1:8081», secure: false},
}
Заработало, но осадочек остался.
Просветите, плиз, в каком конфиге это задается.
Хотел насладиться Fiber-ом. Накатил, ужаснулся количеству ошибок в зависимостях. Откатился взад. Рано!
Как мы на React 16 переезжали