[英]unexpected token, expected “,” inside of react render() function in the return statement
错误是渲染返回函数中的意外令牌,应为“,”。 我正在使用babel并将此文件链接为html文件。 我删除了注释类和组件以进行查看。 我也删除了评论表单组件。
这是main.js:
class App extends React.Component {
constructor(props) {
super(this);
this.handleSubmit = this.handleSubmit.bind(this);
this.state = { comments : [] }
}
handleSubmit(event) {
// ...
}
render() {
const comments = this.state.comments.map((comment) => {
<Comment author={comment.author} message={comment.message} />
});
const formcomment = <CommentForm handleSubmit = {this.handleSubmit} />;
return (
{comments}
{formcomment} // ERROR HERE
)
}
}
ReactDOM.render(<App />, document.getElementById("root"))
发生问题是因为JSX只需要一个根元素。 就您而言,您有两个根元素。
如果要返回多个元素,则需要将它们包装到某种容器中,大多数情况下,一个简单的div
就足够了:
return (
<div>
{comments}
{formcomment}
</div>
);
如果div
破坏了样式,则可能需要使用Fragment
。
编辑:
正如Emile Bergeron指出的那样,您还可以从React 16.2开始返回一个数组:
render() {
return [comments, formcomment];
}
参考 。
问题是您试图在没有父容器的情况下渲染多个元素。
您应该能够通过在return语句的内容周围添加<Fragment> ... </Fragment>
(或更简单地说, <> ... </>
)来解决此问题。 这将为JSX编译器提供一个要渲染的元素。
通常的解决方法是使用“包装器div”,但使用Fragment这样的新方法是在不向DOM添加节点的情况下包装元素的新方法。
您是否尝试过将返回值包装在div
或fragment( <></>
)中?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.