Die Art und Weise Sie planen, diese gewonnen zu tun:
import React, {Component, PropTypes} from 'react';
import ReactDOM from 'react-dom';
class ReactComment extends Component {
static propTypes = {
text: PropTypes.string,
trim: PropTypes.bool
};
static defaultProps = {
trim: true
};
componentDidMount() {
let el = ReactDOM.findDOMNode(this);
ReactDOM.unmountComponentAtNode(el);
el.outerHTML = this.createComment();
}
createComment() {
let text = this.props.text;
if (this.props.trim) {
text = text.trim();
}
return `<!-- ${text} -->`;
}
render() {
return <div />;
}
}
export default ReactComment;
So können Sie es wie folgt verwenden arbeite nicht mit einer Plain-Vanilla-React-Lösung. Sie können jedoch eine benutzerdefinierte Webkomponente definieren, die in HTML-Kommentare konvertiert und diese innerhalb eines React-Wrappers zurückgibt. Eine Beispielkomponente ist implementiert here. Informationen zur Verwendung in React finden Sie unter this url.
aktualisieren 19/01/2017
Das ist also nicht getestete Theorie, aber die Web-Komponente kann wie etwas sein -
`` `
/**
* <react-comment-sentinel> Web Component
*
* @usage
* <react-comment-sentinel sentinel="fragment"><div>Hello there!</div></react-comment-sentinel>
* @result
* <!-- <fragment> --><div>Hello there!</div><!-- </fragment> -->
*/
var proto = Object.create(HTMLElement.prototype, {
name: { get: function() { return 'React HTML Comment'; } },
createdCallback: { value: function() {
/**
* Firefox fix, is="null" prevents attachedCallback
* @link https://github.com/WebReflection/document-register-element/issues/22
*/
this.is = '';
this.removeAttribute('is');
} },
attachedCallback: { value: function() {
var tag = this.attributes("sentinel");
this.outerHTML = '<!-- <' + tag + '> -->' + this.innerHtml + '<!-- </' + tag + '> -->';
} }
});
document.registerElement('react-comment-sentinel', { prototype: proto });
` ``
Beachten Sie, dass die inneren Kinder einfach HTML sind, nicht Reagieren. Sie können jedoch auch experimentieren, indem Sie den Code auf support React Components erweitern.
Die Person, die Foren, verstand nicht, wie funktioniert React. Beachten Sie, dass keiner von denen, die es vorgeschlagen haben, funktionieren würde. Zum einen geht es nicht um das Kernproblem. Das Ergebnis sind vier Knoten (ein Kommentarknoten, zwei Elementknoten und dann ein Kommentarknoten), nicht ein einzelner Knoten. –
Mein Verständnis war, dass die Renderfunktion des Fragments nur die Fragmentkomponente mit zwei untergeordneten Komponenten "c" und "d" zurückgeben würde. Daher das schließende Tag '/ Fragment' im zweiten Kommentar. Es scheint auch, dass Technik verwendet wurde, um eine Fragmentkomponente in Mwiencek/React Fork in Commit dcc972c414 zu implementieren, aber ich könnte falsch liegen. – Amiramix