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;

мои комментарии отображаются в пользовательском интерфейсе.
каков был бы правильный способ обработки комментариев?
обновление:
благодаря "центром внимания" это работает:
{/* whenClicked is a property not an event, per se. */}
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