gpt4 book ai didi

javascript - 如何在 react.js 中递归渲染子组件

转载 作者:IT王子 更新时间:2023-10-29 03:10:24 31 4
gpt4 key购买 nike

我想从它自己的组件中递归地添加一个 React 组件。我看到了这个 tree component 的例子这是通过子 TreeNodes 映射并以相同的方式添加子节点。不幸的是,它对我根本不起作用。想法是有一个简单的评论组件,回复将重用相同的组件。

var Comment = React.createClass({
render: function() {
return (
<div className="comment">

{/* text and author */}
<div className="comment-text">
<span className="author">{this.props.author}</span>
<span className="body" dangerouslySetInnerHTML={{__html: this.props.body}} />
</div>

{/* replies */}
<div className="replies">
{
this.props.replies.map(function(reply) {
<Comment body={reply.body} author={reply.author} />
}.bind(this))
}
</div>

</div>
);
}
});

我收到以下错误消息:

Uncaught TypeError: Failed to construct 'Comment': 请使用 'new' 运算符,此 DOM 对象构造函数不能作为函数调用。

这里是传递给组件的 JSON 数据的示例。

{ "author" : "Some user",
"body" : "<div>Great work</div>",
"replies" : [ { "author" : "A user replying",
"body" : "<div Yes it was great work</div>"
},
{ "author" : "Another user replying",
"body" : "<div It really was great work!</div>"
}
]
}

最佳答案

这是 ES6 中的替代方案:

import React, { Component, PropTypes } from 'react'

export default class Comments extends Component {

render() {

const { children } = this.props

return (
<div className="comments">
{children.map(comment =>
<div key={comment.id} className="comment">
<span>{comment.content}</span>
{comment.children && <Comments children={comment.children}/>}
</div>
)}
</div>
)

}

}

Comments.propTypes = {
children: PropTypes.array.isRequired
}

还有其他一些组件:

<Comments children={post.comments}/>

关于javascript - 如何在 react.js 中递归渲染子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205317/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com