2015-06-10 21 views
62

Können Sie keine Kommentare innerhalb der render-Methode in einer React-Komponente verwenden?ReactJS - Verwendung von Kommentaren

Ich habe die folgende Komponente:

'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

Meine Kommentare zeigen in der Benutzeroberfläche auf.

Wie wäre der richtige Umgang mit Kommentaren?

UPDATE:

Dank limelights dies gearbeitet:

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

Antwort

98

So innerhalb der Render-Methode Kommentare sind erlaubt, aber um sie innerhalb von JSX zu verwenden, müssen Sie diese in Klammern wickeln und Multi verwenden -line Stil Kommentare.

<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> 

Sie mehr darüber, wie Kommentare Arbeit in JSX lesen here

+1

Siehe bearbeiten, sprang ich die Waffe auf die Beantwortung! :) –

+0

Ich weiß nicht warum, aber es gibt mir immer ein Gefühl von schlechtem Code oder etwas falsch im Code. Mit anderen Worten, es scheint, als würde sich das Kommentieren auf diese Weise nicht in meinem Code anpassen. Ich bin mir nicht sicher, ob ich von doppelten Schrägstrichen verwendet wurde Stil '//' kommentieren – adi

16

ist hier ein anderer Ansatz, den Sie // verwenden können Kommentare enthalten:

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

Der Haken dabei ist, dass Sie nicht mit einschließen kann Ein einzeiliger Kommentar, der diesen Ansatz verwendet. Zum Beispiel funktioniert das nicht:

{// your comment cannot be like this} 

weil der Schließbügel } wird als Teil des Kommentars sein und wird somit ignoriert, was einen Fehler auslöst.

+0

dies funktioniert nicht mit react.js daher der gesamte Thread. –

+3

@LukeCarelsen Es funktioniert tatsächlich, weil er das '//' in eckige Klammern eingeschlossen hat. –

4

Dies ist wie.

Gültig:

... 
render() { 

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

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

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

} 
... 

Ungültig:

... 
render() { 

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

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

} 
... 
0

JavaScript Kommentare in JSX als Text analysiert erhalten und in der App angezeigt.

Sie können innerhalb von JSX nicht nur Kommentare HTML verwenden, weil es sie als DOM-Knoten behandelt:

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

JSX Kommentare für einzeilige und mehrzeilige Kommentare folgt der Konvention

Einzeiliger Kommentar:

{/* A JSX comment */} 

mehrzeilige Kommentare:

{/* 
    Multi 
    line 
    comment 
*/} 
1

Auf der anderen Seite, ist das Folgende eines gültigen Kommentars, zog direkt von einer Arbeitsanwendung:

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

Apparantly, wenn innen die spitzen Klammern eines JSX Elements, die // Syntax gültig sind, aber die {/**/} ist ungültig. Die folgenden Pausen:

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