ReactJS - как использовать комментарии



вы не можете использовать комментарии внутри render метод в компоненте React?



у меня есть следующий компонент:



'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');

class Dropdown extends React.Component{
constructor(props) {
super(props);
}
handleClick() {
alert('I am click here');
}

render() {
return (
<div className="dropdown">
// whenClicked is a property not an event, per se.
<Button whenClicked={this.handleClick} className="btn-default" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList />
</div>
)
}
}

module.exports = Dropdown;


enter image description here



мои комментарии отображаются в пользовательском интерфейсе.



каков был бы правильный способ обработки комментариев?



обновление:



благодаря "центром внимания" это работает:



   {/* whenClicked is a property not an event, per se. */}
1090   6  

6 ответов:

внутри render способ комментарии разрешены, но для того, чтобы использовать их в JSX, вы должны обернуть их в фигурные скобки и использовать многострочные комментарии в стиле.

<div className="dropdown">
    {/* whenClicked is a property not an event, per se. */}
    <Button whenClicked={this.handleClick} className="btn-default" title={this.props.title} subTitleClassName="caret"></Button>
    <UnorderedList />
</div>

вы можете прочитать больше о том, как комментарии работают в JSX здесь

вот еще один подход, который позволяет использовать // включить комментарии:

return (
  <div>
    <div>
      {
        // Your comment goes in here.
      }
    </div>
    {
      // Note that comments using this style must be wrapped in curly braces!
    }
  </div>
);

улов здесь вы не можете включить однострочный комментарий, используя этот подход. Например, это не работает:

{// your comment cannot be like this}

потому что закрывающая скобка } считается частью комментария и, таким образом, игнорируется, что вызывает ошибку.

вот как.

действующий:

...
render() {

  return (
    <p>
       {/* This is a comment, one line */}

       {// This is a block 
        // yoohoo
        // ...
       }

       {/* This is a block 
         yoohoo
         ...
         */
       }
    </p>
  )

}
...

недействительным:

...
render() {

  return (
    <p>
       {// This is not a comment! oops! }

       {//
        Invalid comment
       //}
    </p>
  )

}
...

С другой стороны, Ниже приведен допустимый комментарий, вытащенный непосредственно из рабочего приложения:

render () {
    return <DeleteResourceButton
            //confirm
            onDelete={this.onDelete.bind(this)}
            message="This file will be deleted from the server."
           />
}

очевидно, когда внутри угловые скобки элемента JSX,// синтаксис, но {/**/} является недействительным. Следующие перерывы:

render () {
    return <DeleteResourceButton
            {/*confirm*/}
            onDelete={this.onDelete.bind(this)}
            message="This file will be deleted from the server."
           />
}

комментарии JavaScript в JSX анализируются как текст и отображаются в вашем приложении.

вы не можете просто использовать HTML-комментарии внутри JSX, потому что он рассматривает их как узлы DOM:

render() {
  return (
    <div>
      <!-- This doesn't work! -->
    </div>
  )
}

комментарии JSX для однострочных и многострочных комментариев следуют конвенции

однострочный комментарий:

{/* A JSX comment */}

многострочные комментарии:

{/* 
  Multi
  line
  comment
*/}  
{ 
    // any valid js expression
}

Если вам интересно, почему это работает? это потому, что все, что находится внутри фигурных скобок { } является выражением javascript,

Так что это тоже хорошо:

{ /*
         yet another js expression
*/ }

Comments

    Ничего не найдено.