React.js:为什么要传递回调以将数据更新为拥有的组件

时间:2014-09-29 05:21:28

标签: javascript reactjs

我正在做React.js教程(http://facebook.github.io/react/docs/tutorial.html),并且不了解这一行背后的原因:

  

在CommentBox中执行所有这些逻辑是有意义的,因为CommentBox拥有表示注释列表的状态。

为什么CommentBox只是将注释列表传递给CommentForm,以便它可以将新注释添加到列表中,而不是传递onCommentSubmit回调?

1 个答案:

答案 0 :(得分:3)

通常,这种控制反转允许您集中有状态数据以及在负责"负责的组件中操纵该数据。跟踪它并减少改变组件的理由。例如,如果有一天的评论列表变成了评论地图或评论的不可变数据结构,那么您不应该只更改CommentFormCommentBox

这也允许您构建更多可重用的组件。例如,想象一下您希望能够编辑评论的场景并不是一件容易的事。通过将更改处理程序传递到CommentForm,可以重复使用此组件进行编辑以及创建注释,但这只有在您不在表单内做出关于应该发生什么的假设时才有可能当它提交时。

相关问题