【发布时间】:2019-08-31 20:09:05
【问题描述】:
背景
我有一个物品清单。如果您单击某个项目下的详细信息链接,您将被带到其页面,您可以在该页面上阅读和添加有关该特定项目的 cmets。目前,cmets 组件同时在index page 和item details page 上呈现。它应该只在后者上渲染。
你能帮我找出原因吗?
疑难解答
我检查了我的路线以及我的评论和评论组件,但没有看到任何明显的错误。我看到this post 两次渲染组件,但我的情况不同,因为我必须使用render= 来传递道具。
我承认,我从来没有尝试过建立这样的路线,所以也许我没有正确地接近它。一个是问题是下面这个列表中倒数第二个问题。
路线
render(){
return(
<div>
<Switch>
<Route exact path='/' render={(routerProps) => <Programs {...routerProps} programs={this.props.programs}/>} /> />
<Route exact path='/programs' render={(routerProps) => <Programs {...routerProps} programs={this.props.programs} />} />
<Route path='/programs/new' render={(routerProps) => <ProgramInput {...routerProps}/>}/>
<Route path='/programs/:id' render={(routerProps) => <Program {...routerProps} programs={this.props.programs}/>}/>
<Route exact path='/programs/:id/comments' render={(routerProps) => <Program {...routerProps} program={this.props.program}/>}/>
<Route exact path='/watchlist' render={(routerProps) => <Program {...routerProps} programs={this.props.programs} />} />
</Switch>
</div>
)
}
评论容器
class CommentsContainer extends React.Component {
render(){
return(
<div>
<Comments comments={this.props.program && this.props.program.comments}/>
</div>
)
}
}
export default CommentsContainer
程序(呈现 CommentsContainer 的地方)
I took out some of the Card code for brevity. There is More link inside the card that takes you to the item page. That part works fine.
return(
<Fragment>
<Grid.Column>
<Card as='div'>
</Card>
</Grid.Column>
<CommentsContainer program={program}/>
</Fragment>
)
}
评论
const Comments = (props) => {
// console.log(props.comments && props.comments.map(comment => console.log(comment))
return(
<Comment.Group>
{props.comments && props.comments.map(comment => <CommentCard key={comment.id} comment={comment}/>)}
</Comment.Group>
)
}
export default Comments
评论卡 我认为问题不在于这里,但如果您需要查看文件,请here's a link。
后端
我在后端使用 Rails API。 Here is a link to my comments_controller if you want to take a peek.
感谢您的宝贵时间和建议!
【问题讨论】:
-
我在 repo 中没有看到你的路线??
-
@MattOestreich 与我上面列出的第一个代码块不同的路线?
-
你能提供一个包含上述路由的js文件的链接吗?
-
@MattOestreich 哈哈!没错here。
-
...这发生在哪些路线上?我不知道哪些页面是您的索引页面和项目详细信息页面。请告诉我发生这种情况的确切路线。
标签: javascript reactjs react-redux react-router