2015-09-10 5 views
0

я модернизировал реагировать на 0,14-rc1 от 0,14 бета3, теперь я вижу предупреждениеВнимание: Реагировать классы компонентов должны распространяться React.Component при использовании ScalaJS

Предупреждения: $ c_Hello $ компонент (...): Классы классов реактивов должны расширяться. React.Component.

но мой компонент расширения React.Component

object Hello { 
    @ScalaJSDefined 
    class Component extends ReactComponent[Unit, Unit] { 
    def render() = React.createElement("div",null,"hello") 
    } 
} 

нет предупреждений в 0,14 бета3.

Я думаю, логика здесь неточно? : https://github.com/facebook/react/blob/b01af40ae64823fb963a8fa6ced3c42ae09fad55/src/renderers/shared/reconciler/ReactCompositeComponent.js#L170

в режиме отладки inst instanceof Component верно

+0

Логика правильная - предупреждение предупреждает, когда первый аргумент «false». Поэтому инвертирование 'instanceof' дает нам то, что мы хотим. Что такое 'ReactComponent' в вашем коде? Это «React.Component»? Или это что-то по-другому происходит в транспиляции от Scala до JS? L –

+0

его React.Component от reactjs, я просто использую псевдоним для удобства в моей базе кода. – invariant

ответ

2

Похоже, это Scala-JS ошибка, где флаг .isReactClass не копируется более. Я подал вопрос там:

https://github.com/scala-js/scala-js/issues/1900

Похоже, что ваш код может работать, если вы измените ваши настройки SBT использовать

scalaJSOutputMode := org.scalajs.core.tools.javascript.OutputMode.ECMAScript6 

, а затем он будет использовать родные классы ES6. Но the blog post in which it was introduced предполагает, что он не готов к использованию.

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