【发布时间】:2016-02-10 18:54:58
【问题描述】:
我目前正在 React + Flux (RefluxJS) 中做一个小项目,但遇到了一个我无法解决的问题。如果你们当中有人能帮我一把,我将不胜感激。
这里有整个项目的the link to GitHub,以便于您的帮助,这是一个最简单的版本,只是为了重现我遇到的问题。
我的疑问是,我怎样才能在同一个视图中使用具有不同内容的一个组件。让我解释一下:
我有一个组件,“components/threads.jsx”,总而言之,它可以让代码从存储中获取数据(“stores/thread-store.jsx”) ) 通过伪造的 API ("utils/api.jsx"):
renderThreads: function() {
return this.state.thread_content.map(function(thread, i) {
return (
<div key={thread.id}>
<div className="row">
<div className="col-md-10">
<a data-toggle="collapse" href={'#thread-' + thread.id} className="faq-question">{thread.name}</a>: <small>{thread.content}</small>
</div>
</div>
<div className="row">
<div className="col-lg-12">
<div id={'thread-' + thread.id} className="panel-collapse collapse ">
<Posts id={thread.id} />
</div>
</div>
</div>
</div>
);
});
},
如您所见,我在 "components/thread-posts.jsx" 中嵌套了另一个名为“Posts”的组件,它为每个映射的线程呈现。在“帖子”组件中,我有这样的代码:
module.exports = React.createClass({
mixins: [
Reflux.listenTo(PostsStore, 'onChange'),
],
getInitialState: function() {
return {
posts: []
}
},
componentDidMount: function() {
Actions.getPosts(this.props.id);
},
render: function() {
return (
<div>
{this.renderPosts()}
</div>
);
},
renderPosts: function() {
if(this.state.posts.comments != undefined){
return this.state.posts.comments.map(function(post, i) {
return(
<div key={i} className="faq-answer">
<p>
{post.content}
</p>
</div>
);
});
}
},
onChange: function(event, posts) {
this.setState({
posts: posts,
});
}
问题来了。完成渲染后,所有线程都有相同的帖子,特别是最后的帖子。我认为与状态有关,如果它们发生变化,所有渲染的组件都会发生变化。
所以,我的问题是,我该如何处理它以便根据其主题发布帖子但使用相同的组件?如果不可行,最好的解决方案是什么?
我希望能解释我自己,也足以理解我。
如果您能帮我解决这个问题,我将不胜感激。
提前致谢。
【问题讨论】:
标签: reactjs flux reactjs-flux refluxjs