2015-10-21 2 views
11

Итак, когда вы объявляете компонент в реакции с строчной первой буквой, он не отображается, не выдавая ошибку. Когда вы используете имя компонента, оно работает.Почему компоненты в реагировании должны быть капитализированы?

Что это такое реализовано? Чтобы избежать столкновения с существующими элементами html, или это ошибка?

var test = React.createClass({ 
    render: function() { 
    return (
     <div>Test</div> 
    ); 
    } 
}); 

var Screen = React.createClass({ 
    render: function() { 
    return (
     <div> 
     <test/> 
     </div> 
    ); 
    } 
}); 

Когда я изменяю test к Test, он работает:

var Test = React.createClass({ 
    render: function() { 
    return (
     <div>Test</div> 
    ); 
    } 
}); 

var Screen = React.createClass({ 
    render: function() { 
    return (
     <div> 
     <Test/> 
     </div> 
    ); 
    } 
}); 

ответ

12

От some react release notes

на JSX имя тега конвенции (строчные имена относятся к встроенным компонентам, капитализированные имена относятся к пользовательским компонентам).

+10

Я бы подумал, что можно будет разорвать конвенцию. Если нарушение соглашения нарушает код, это больше, чем соглашение. – Oliver

+0

Возможно, потому, что он следует другим соглашениям об именах классов ООП, таких как Java – Brett84c

0

Реагировать на самом деле просто чувствительны к регистру.

Здесь есть соответствующая проблема github, где кто-то задает тот же вопрос. https://github.com/reactjs/React.NET/issues/76

+0

DOM нечувствителен к регистру (в режиме HTML). – Quentin

+0

Эта проблема github говорит о свойствах узлов DOM, а не о именах элементов. – Quentin

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