Material-ui: Material-UI несовместим с React 0.14

Созданный на 3 июл. 2015  ·  59Комментарии  ·  Источник: mui-org/material-ui

Из-за изменения refs React 0.14 . Я думаю, что у Material-UI будет довольно много проблем почти с каждым компонентом библиотеки.

this.refs.XXX вернет узел DOM вместо компонента, что означает, что мы не сможем вызывать на нем какие-либо функции компонента.

Все 59 Комментарий

@tleunen Вы на

@ hai-cea Я изучил некоторые проблемы (я нашел ~ 50 в 21 файле). Это может быть хорошей возможностью для важной вехи. Я смотрел файлы диалога / диалогового окна / оверлея, и через this.refs.xxx.yyy () было много связей, поэтому это может быть непростой задачей. Если вы хотите сделать веху совместимости с React 0.14, дайте мне знать, и я могу помочь в написании проблем (я уверен, что @tleunen хотел бы участвовать - я не хочу его добровольно предлагать).

Спасибо, ребята, @tleunen!

Я согласен, это вызовет некоторые проблемы. Какая альтернатива? Сохранить элемент в переменной внутри рендера?

@jkruder Вы используете gitter - https://gitter.im/callemall/material-ui ? Отправьте мне мгновенное сообщение, и мы займемся организацией проблем / этапов.

В большинстве случаев компоненты не должны иметь общедоступных функций. Все должно проходить с подпорками или при их установке.

Например, компоненту Dialog не нужны show и hide . Если он находится в dom, он отображается, иначе - нет.

Я только начинаю использовать Material-UI, поэтому я не очень осведомлен о проблемах с другими компонентами, но я думаю, что большинство из них можно переписать, чтобы не иметь общедоступных функций (в любом случае другого выбора нет).
Дело в том, что это будет серьезное изменение по сравнению с текущей версией.

@tleunen Я не могу больше согласиться с методами отображения и скрытия диалогов.

@tleunen @oliviertassinari Да , я согласен с вами обоими. Это был спор, который мы обсуждали при разработке этого компонента. Проблема, с которой мы столкнулись, заключалась в функции щелчка мышью. Если открытие / закрытие было обработано в состоянии, тогда он мог беспокоиться о закрытии при нажатии. Если бы открытие / закрытие было передано как реквизит, каждый, кто использовал диалог, должен был бы обрабатывать щелчок самостоятельно.

Теперь промежуточным решением было бы добавить опору onClickAway в диалог и позволить пользователю компонента открывать / закрывать.

@ hai-cea Я бы предложил использовать тот же подход, что и https://github.com/rackt/react-modal. По сути, это ваше среднее решение.

Для чего еще эта библиотека использует this.refs при взаимодействии с компонентом DOM, кроме как getDOMNode() ? Это изменение в React применимо только к таким компонентам, как <div/> и <i/> , не так ли? Как обычно, к вашим пользовательским компонентам можно получить доступ с помощью this.refs.xxx . Поправьте меня, если я ошибаюсь. Я еще не пробовал React 0.14, но то же самое появилось на HackerNews.

Вы имеете в виду, что если React обнаружит, что ссылка находится в пользовательском компоненте, он вернет компонент вместо элемента DOM внутри компонента?

@tleunen это я понимаю. Требуется проверка :)

@mull Было бы очень хорошо, если это так. :)

@ hai-cea @mull @tleunen Просто запустил быстрый тест и ссылка на пользовательский (что-то, что расширяет React.Component) компонент (this.refs.customComponent) вернет ссылку на компонент React, а НЕ на базовый узел DOM. Если у вас есть ссылка на узел DOM (div / a / img / etc), то this.refs.domRef вернет узел.

@ hai-cea При этом я все еще думаю, что лучше отказаться от вызова методов в this.refs.XXX.

@jkruder спасибо, рад, что я говорил не от своего ... :)

хорошо, спасибо за исследование @jkruder. Думаю, мы сэкономим, чтобы закрыть это. Хотя, я думаю, нам еще нужно сделать отметку 0,14?

Кроме того, что вы думаете о # 1033?

Думаю, тогда мы сможем закрыть его. Но было бы хорошо переписать некоторые компоненты, чтобы избавиться от необходимости вызывать на них функции. Компоненты должны работать не так: /

@ hai-cea Согласен. Я работаю над черновиком предлагаемой работы для контрольной точки 0,14, которую отправлю вам для обратной связи.

Что касается # 1033, я не думаю, что мы должны делать прыжок прямо сейчас. Я за создание отдельной ветки, где мы можем преобразовать MUI, чтобы он был совместим с тем, что предлагается для версии 0.14, и сделать компоненты более функциональными (минимизировать / исключить this.refs.XXX.YYY ()).

Если текущее использование this.ref.xxx на самом деле не нарушает material-ui при использовании вместе с react 0.14.0-beta1, тогда я не чувствую, что желание отходить от этого шаблона должно блокировать # 1033. Упростив установку material-ui вместе с react 0.14.0-beta1, вы настроите себя на получение ранней обратной связи по актуальным проблемам, которые могут возникнуть; Лучше получить эту обратную связь, когда 0.14 все еще находится в стадии бета-тестирования.

Возможно, хорошей альтернативой (которая лучше соответствует ожиданиям) является выпуск альфа / бета / rc-версии material-ui на npm, которая имеет 0.14.0 в качестве одноранговой зависимости (и ориентирована на обеспечение совместимости с material-ui 0.14). Таким образом людям будет легче двигаться вперед и находить / исправлять любые проблемы, которые могут существовать.

@jkruder Есть поводу ?

@ashtonwar Пока нет - я сосредоточился на том, чтобы

Приветствую, что посмотрели на это. Я видел material-ui-io из # 1033. Кажется, что это работает для некоторых компонентов (выпадающие списки, кнопки, закусочная), но падает и умирает на других (флажок, ползунок, переключатель). Неизвестно о других попытках миграции.

@tleunen Оказывается , мы все еще можем использовать this.refs.XXX для пользовательского компонента. Спасибо @jkruder .

Нет проблем; Я по-прежнему считаю, что по возможности лучше избегать использования this.refs.doSomething() .

Любые обновления? React JS 0.14 RC 1 только что был выпущен и очень хотел бы использовать с ним Material-UI.

То же самое, есть ли способ поддержать переход на 14?

Я использую material-ui-io в производстве - вроде нормально.

Так что я тот парень, который опубликовал material-ui-io, и это была очень грубая и грустная попытка портировать material-ui.

Я настоятельно рекомендую вам не использовать эту библиотеку в продакшене ! Я сделал порт и опубликовал его через день, чтобы протестировать material-ui, но в итоге переключился на создание собственной библиотеки поверх mdl.

Я бы сказал, что лучший способ, которым все мы можем помочь с проверкой пользовательского интерфейса материала на React 14, - это перейти на React 14-rc1 и сообщать о возникающих проблемах индивидуально. Может быть хорошей идеей начать заголовок проблемы с «React 14-rc1: эта конкретная ошибка ...» или просто позволить проблеме быть помеченной соответствующей меткой.

Но может и нет, и в этом случае я надеюсь, что ведущие специалисты меня поправят.

https://github.com/callemall/material-ui/pull/1647

Возможно, потребуется немного подправить данные о peer-deps, dev-deps и deps, и есть проблема с событиями касания, которые ожидаются.

В React 0.14 onTouchCancel, onTouchEnd, onTouchMove, onTouchStart работают автоматически, см. Https://facebook.github.io/react/blog/#breaking -changes.
Чтобы включить onTouchTap без плагина response-tap-event-plugin:

import EventPluginHub from 'react/lib/EventPluginHub';
import TapEventPlugin from 'react/lib/TapEventPlugin';
EventPluginHub.injection.injectEventPluginsByName({ TapEventPlugin });

У нас все еще есть задержка 300 мс в iOS Safari?

У меня нет IOS ...
Но в первом сообщении здесь https://github.com/facebook/react/issues/436 в качестве решения предлагается внедрение TapEventPlugin.
Помимо этого здесь https://github.com/facebook/react/commit/ff12423d639413c1934dfc2ff337b298952e99ef я нашел соответствующий коммит.

Есть ли предварительные сроки для поддержки React 14? Это действительно старая проблема, и было бы неплохо, если бы она скоро разрешилась!

Я тоже был очень рад использовать этот инструментарий пользовательского интерфейса и избегать Bootstrap, Foundation и даже Elemental UI ... но я использую React 0.14 с Redux и не собираюсь возвращаться к 0.13. Как долго до обновления?

Кроме того, я не уверен, что имею право запрашивать / предоставлять эту информацию, но что касается ссылок (также не уверен, что это 0,14 ... или 0,12 / 0,13), я обычно добавляю это в свои элементы ввода формы:

В моем коде onclick (или другом обработчике) я могу получить доступ к значению через this.name.value. Облегчает получение любых входных значений. Есть ли шанс, что это все, что нужно для обновления инструментария с рабочей ссылкой?

+1 по этому поводу. Нашел сегодня material-ui и был очень рад попробовать его! К сожалению, нет кубиков.

+1. Также хотелось бы знать график этого обновления!

: +1:

Мы приближаемся, ребята! См. № 1751. На этом этапе требуется немного больше работы для обновления до нового react-router api.

Я бы рекомендовал попробовать ветку react-0.14-support и сообщать о любых проблемах с префиксом [React0.14] в заголовке. Как только мы получим полную работоспособность этой ветки, я закрою эту проблему (наконец!) :)

Рад слышать! С нетерпением жду финальной версии. Я работал с
Redux, React, response-router, и пока это довольно хороший способ. Смотреть
ждем включения в это Material UI.

Во вторник, 29 сентября 2015 г., в 13:31, Шаурья Арора [email protected]
написал:

Мы приближаемся, ребята! См. № 1751
https://github.com/callemall/material-ui/pull/1751. На данный момент
требуется немного больше работы для обновления до нового api реактивного маршрутизатора.

Я бы порекомендовал попробовать ветку response-0.14-support и отчетность.
любые проблемы с префиксом [React0.14] в заголовке

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/callemall/material-ui/issues/1030#issuecomment -144183104
.

Круто! Буду ставить вопросы, если есть что ...

Есть новости о дате выпуска поддержки React 0.14?

@amagdas знаете ли вы о react-0.14-support ? Это постоянное усилие. Не стесняйтесь протестировать это и сообщать о любых проблемах с префиксом [React0.14]

@ shaurya947 Да, я знаю об этом, но я не могу установить ветку с помощью npm, пытаюсь снова.
Было бы неплохо иметь какой-нибудь Readme / wiki о том, как протестировать эту ветку с помощью react 0.14.

вы можете либо npm link из клона, либо сделать npm i 'git://github.com/callemall/material-ui#react-0.14-support' в своем проекте.

Чтобы было ясно, вам нужно выполнить установку npm в каталоге node_modules
не корень вашего каталога
2 октября 2015 г. в 08:01 "Цзя-лян Као" [email protected] написал:

вы можете либо ссылку npm из клона, либо выполнить npm i 'git: //
github.com/callemall/material-ui#react-0.14-support 'в свой проект.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/callemall/material-ui/issues/1030#issuecomment -145051787
.

@amagdas эта ветка еще не работает на npm, так как в ней все еще есть некоторые проблемы, и работа над ней продолжается.

Вы можете либо сделать то, что сказал @clkao , либо после клонирования репозитория на вашем компьютере переключиться на ветку react-0.14-support используя git checkout react-0.14-support .

После этого, когда вы запускаете npm i в корневом каталоге, все исходные файлы компилируются в папку lib . Затем вы можете использовать эту папку lib в своем проекте.

Ага, сделал это, и это работает, дадим обратную связь.

Как насчет использования этого инструмента FB для автоматического внесения изменений? https://github.com/facebook/react/blob/master/packages/react-codemod/README.md

Посмотрите на «Известные исправления ошибок» в анонсе React 0.14 (http://facebook.github.io/react/blog/2015/10/07/react-v0.14.html):
«События кликов более надежно обрабатываются React DOM в мобильных браузерах, особенно в Mobile Safari».
...

@kinolaev Подробнее: https://github.com/callemall/material-ui/pull/1732#issuecomment -143478944

react-0.14-support удалено?

@ovaris меня слили в master.

@oliviertassinari, когда будет доступно на npm?

когда будет доступно в npm

Понятия не имею, когда у нас будет версия без ошибок. Однако вы можете попробовать основную ветку с npm.

Должно быть исправлено последней версией v0.13.0
Спасибо evreybody за вашу помощь.

@oliviertassinari, спасибо!

благодарю вас!

Есть идеи, будет ли эта проблема существовать в последней версии material-ui? Я могу использовать большинство компонентов, кроме тех, которые используют this.refs.xxx.например, если я пытаюсь использовать компонент DatePicker, я получаю сообщение об ошибке «Не могу прочитать свойство 'show' of undefined», а здесь undefined - this.refs.dialogWindow.

Я нахожусь на реакции 0.14.8 и material-ui 0.14.4 ...

та же ошибка

Похоже, что material-ui не работает с React 0.14.8 и 0.14.9, и это жалко.
Webpack выдает много странных жалоб на мою консоль. Не понимаю, что делать.

@ topgun743 Очень обидно с вашей стороны описывать прекрасную работу здесь ( бесплатно ) как жалкую.

Так как этот вопрос был открыт React 15 был выпущен, какой материал-интерфейс совместим с. Я предлагаю обновить React внутри вашего проекта.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги